Ceci est une ancienne révision du document !
−Table des matières
Docker
Doc
Driver de stockage
Dockerfile
docker-compose
Systemd
Sécurité
Plugins
API
Autres
Commandes docker
docker run
Crée et démarre un conteneur à partir d'une image :
Options intéressantes :
- –name : donne un nom au conteneur
- –rm : efface le contener quand il se termine
- -it : mode intéractif (-i) avec pseudo TTY –t)
- -d / –detach : Lance le conteneur en backgroud
- –read-only : monte le contener en RO
- -v / –volume : Map un volume
- -p / –publish : Map un port
- -P / –publish-all : Map l’ensemble des ports de façon aléatoire
- –expose : Expose le port d'un conteneur (pour un link par exemple)
Exemples :
$ docker run --rm -v /home/gigix:/foo:ro -w /foo -i -p 127.0.0.1:80:8080 -t ubuntu bash
$ docker run -itd --network=my-net --ip=10.10.9.75 busybox
$ docker run --device=/dev/sdc:/dev/xvdc --device=/dev/sdd --device=/dev/zero:/dev/nulo -i -t ubuntu ls -l /dev/{xvdc,sdd,nulo}
$ docker run --restart=always redis
Copie la configuration des volumes d'un conteneur à l'autre :
$ docker create -v /dbdata --name dbstore training/postgres /bin/true $ docker run -d --volumes-from dbstore --name db1 training/postgres $ docker run -d --volumes-from dbstore --name db2 training/postgres
Link ce conteneur avec db (–link id[:alias]
) :
$ docker run -t -i --rm --link db:db training/webapp /bin/bash
docker create
Crée un nouveau conteneur à partir d'une image sans le démarrer :
Similaire à docker run sauf qu'il ne démarre pas le conteneur.
$ docker create -t -i fedora bash
docker attach
Interagit avec le processus du conteneur :
Pratique si un prompt se présente afin d'y répondre.
Pour se détacher ⇒ CTRL-p CTRL-q
(on peut le changer avec l'option –detach-keys
).
$ docker attach 2d5e8999b138
docker images
$ docker images --no-trunc
docker rmi $(docker images -f "dangling=true" -q)
$ docker images --digests
docker diff
Affiche les différences entre le conteneur et son image :
$ docker diff 2d5e8999b138
- A : Add
- D : Delete
- C : Change
docker history
docker tag
$ docker tag 0e5574283393 fedora/httpd:version1.0
$ docker tag httpd fedora/httpd:version1.0
docker rename
$ docker rename 2d5e8999b138 myconteneur_V1
docker exec
Lance une commande dans un conteneur :
$ docker exec -it bf283346cee9 bash
docker cp
Copie un fichier dans ou hors du conteneur :
docker cp foo.txt mycontainer:/foo.txt docker cp mycontainer:/foo.txt foo.txt
Une autre méthode pour décompresser un tar dans le /tmp
du conteneur :
$ cat Docker.tgz | docker exec -i 2d5e8999b138 tar xzf - -C /tmp
docker events
Affiche le journal d'évenement de docker :
$ docker events --since '2016-10-22' --filter 'container=b6a2bd1f6ea8' --filter 'event=stop'
docker login
$ docker login
$ docker login localhost:8080
Cela crée le fichier $HOME/.docker/config.json
.
docker logout
Se déconnecter du docker hub :
$ docker logout localhost:8080
docker pull
$ docker pull debian:jessie
$ docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
docker pull myregistry.local:5000/testing/test-image
docker pull --all-tags fedora
docker push
docker search
$ docker search --filter "stars=3" --filter "is-automated=true" --no-trunc --limit 5 debian
$ docker search --filter "is-official=true" debian
docker rmi
$ docker rmi localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0
$ docker rmi -f fd484f19954f
$ docker rmi test
docker rm
Supprime tous les conteneurs stoppés :
$ docker rm $(docker ps -a -q)
Supprime le lien entre webapp et redis :
$ docker rm --link /webapp/redis
Supprime le conteneur redis et ses volumes associés:
$ docker rm -v redis
docker ps
- -f, –filter value : Filter output based on conditions provided (default [])
- exited=<int> an exit code of <int>
- label=<key> or label=<key>=<value>
- status=(created|restarting|running|paused|exited)
- name=<string> a container's name
- id=<ID> a container's ID
- before=(<container-name>|<container-id>)
- since=(<container-name>|<container-id>)
- ancestor=(<image-name>[:tag]|<image-id>|<image@digest>)
containers created from an image or a descendant.
- –format : Pretty-print containers using a Go template
- .ID : Container ID
- .Image : Image ID
- .Command : Quoted command
- .CreatedAt : Time when the container was created.
- .RunningFor : Elapsed time since the container was started.
- .Ports : Exposed ports.
- .Status : Container status.
- .Size : Container disk size.
- .Names : Container names.
- .Labels : All labels assigned to the container.
- .Label : Value of a specific label for this container. For example '{{.Label "com.docker.swarm.cpu"}}'
- .Mounts : Names of the volumes mounted in this container.
$ docker ps -a --filter 'exited=137'
$ docker ps --format "table {{.ID}}\t{{.Labels}}"
docker logs
docker start
docker stop
docker restart
docker kill
docker wait
docker pause
docker unpause
docker version
Affiche la version de docker :
$ docker version --format '{{.Server.Version}}'
$ docker version --format '{{json .}}'
docker info
docker top
docker inspect
docker commit
Crée une nouvelle image à partir d'un conteneur :
$ docker commit -m "Added json gem" -a "GigiX" b6a2bd1f6ea8 gigi206/test:v1
$ docker inspect -f "{{ .Config.Env }}" gigi206/test:v1 [HOME=/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin] $ docker commit --change "ENV DEBUG true" b6a2bd1f6ea8 gigi206/test:v1
$ docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a svendowideit/testimage:version4
docker update
docker build
Crée une nouvelle image à partir d'un Dockerfile :
On créer un fichier Dockerfile dans le répertoire courant et on lance la construction de l'image :
$ docker build -t ouruser/sinatra:v2 .
docker export
Exporte un conteneur au format tar :
$ docker export $ID | gzip -c > image.tgz
$ docker export red_panda > latest.tar
$ docker export --output="latest.tar" red_panda
docker import
Importe une image à partir d'un fichier archive (.tar, .tar.gz, .tgz, .bzip, .tar.xz, ou .txz) :
$ gzip -dc image.tgz | docker import - flat-image-name
Importe le répertoire courant en tant qu'image docker :
$ sudo tar -c . | docker import - exampleimagedir
docker port
Affiche le mapping de port d'un conteneur :
$ docker port test 7890/tcp -> 0.0.0.0:4321 9876/tcp -> 0.0.0.0:1234 $ docker port test 7890/tcp 0.0.0.0:4321
docker stats
docker network
docker network driver
Network supporte l'option driver
afin de spécifier un driver. Celui par défaut est bridge
.
docker network ls
docker network inspect
Affiche les caractéristiques d'un réseau :
$ docker network inspect bridge
docker network create
Crée un nouveau réseau : Créer un réseau qui n'a pas accès aux autres machines du parc :
$ docker network create -o com.docker.network.bridge.enable_icc=false -o com.docker.network.bridge.enable_ip_masquerade=false isolated $ docker network inspect isolated
docker network rm
$ docker network rm gigix
docker network connect
Connecte un conteneur à un nouveau réseau (en plus des réseaux existants) :
$ docker network connect gigix bf283346cee9
docker network disconnect
Déconnecte un conteneur d'un réseau :
$ docker network disconnect gigix bf283346cee9
docker volume
docker volume ls
docker volume create
$ docker volume create --driver local --opt type=btrfs --opt device=/dev/sda2 --name foo
$ docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 --
$ docker volume create --driver local --opt type=nfs --opt o=addr=192.168.1.1,rw --opt device=:/path/to/dir --name foo
docker volume inspect
docker volume rm
Commandes docker swarm
docker swarm
docker swarm init
Initialise le cluster en créant un noeud de type manager
:
$ docker swarm init
docker swarm join
Rejoint le docker swarm : Une fois que le docker_swarm_init est lancé sur le noeud manager. Il faut recopier et coller la commande pour joindre le noeud manager en tant que worker.
docker swarm join-token
Génère un nouveau ticket pour joindre swarm :
$ docker swarm join-token worker
$ docker swarm join-token manager
docker swarm leave
$ docker swarm leave
A lancer à partir du worker (seulement pour un worker) !
docker swarm update
Met à jour swarm avec de nouveaux paramètres :
$ docker swarm update --cert-expiry 720h
docker node
Gestion des noeuds swarm.
docker node ls
$ docker node ls
docker node inspect
Affiche les caractéristiques d'un noeud :
$ docker node inspect node01
docker node inspect
Affiche les caractéristiques d'un noeud :
$ docker node inspect node01
docker node ps
Liste les tâches qui s’exécutent sur un noeud :
$ docker node ps node01
docker node promote
$ docker node promote node01
docker node demote
$ docker node promote node01
docker node update
Met à jour la configuration d'un noeud :
$ docker node update --availability drain node01
docker service
Pour créer un service basé sur un fichier docker-compose.yml
, il faut se mettre dans ce même répertoire que ce fichier et taper :
$ docker-compose bundle
Cela va créer le fichier .dsb (.dab). Il suffit ensuite de le déployer dans swarm :
$ docker deploy <DABFilename>
docker service ls
$ docker service ls
docker service create
$ docker service create --name redis --replicas=2 redis:3.0.6
docker service inspect
Affiche la configuration du servive :
$ docker service inspect redis --pretty
docker service ps
Affiche les tâches d'un service :
$ docker service ps redis
docker service scale
$ docker service scale backend=3 frontend=5
docker service rm
$ docker service rm redis
docker service update
$ docker service update --limit-cpu 2 redis
docker-compose
Commandes docker-compose
L'outil docker-compose fait intervenir la notion de service qui représente l'ensemble des conteneurs construits à partir d'un fichier docker-compose.yml
.
docker-compose build
Construit ou reconstruit les images du service à partir du fichier docker-compose.yml
.
docker-compose pull
docker-compose up
Crée et démarre le(s) conteneur(s) du service.
Options :
- -d : mode démon (détaché)
- –build : rebuild les images avant de lancer les conteneurs
[root@docker test]# docker-compose up -d Starting test_redis_1 Starting test_web_1
docker-compose ps
docker-compose run
docker-compose exec
docker-compose stop
docker-compose start
docker-compose restart
docker-compose down
docker-compose config
docker-compose events
docker-compose kill
docker-compose pause
docker-compose unpause
docker-compose logs
docker-compose rm
Supprime les conteneur arrêtés :
$ docker-compose rm --all
docker-compose scale
Multiplie le nombre de conteneur pour un service :
$ docker-compose scale web=2