Outils pour utilisateurs

Outils du site


systeme:docker

Ceci est une ancienne révision du document !


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 :

Utilisation avancée de docker run.

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

Liste les 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

Affiche l'historique d'une image :

$ docker history gigi206/test:v1

docker tag

Tag une image :

$ docker tag 0e5574283393 fedora/httpd:version1.0

$ docker tag httpd fedora/httpd:version1.0

docker rename

Renomme un conteneur :

$ 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

Se connecter au docker hub :

$ 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

Télécharge une image docker :

$ docker pull debian:jessie

$ docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

docker pull myregistry.local:5000/testing/test-image

docker pull --all-tags fedora

docker push

Envoye une image sur le hub :

$ docker push gigi206/test:v1

Recherche une image :

$ docker search --filter "stars=3" --filter "is-automated=true" --no-trunc --limit 5 debian

$ docker search --filter "is-official=true" debian

docker rmi

Supprime une image :

$ docker rmi localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0

$ docker rmi -f fd484f19954f

$ docker rmi test

docker rm

Supprime un conteneur :

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

Liste les conteneurs :

  • -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

Affiche la sortie du conteneur :

$ docker logs -f d135c332e896

docker start

Démarre un conteneur :

$ docker start -i d135c332e896

docker stop

Arrête un conteneur :

$ docker stop -t 30 d135c332e896

docker restart

Redémarre un conteneur :

$ docker restart -t 30 d135c332e896

docker kill

Envoie un signal au conteneur (Kill par défaut) :

$ docker kill -s TERM d135c332e896

wait

Attend jusqu'à ce que le conteneur s'arrête :

$ docker wait 2d5e8999b138

docker pause

Met en pause le conteneur :

$ docker pause d135c332e896

docker unpause

Supprime la pause du conteneur :

$ docker unpause d135c332e896

docker version

Affiche la version de docker :

$ docker version --format '{{.Server.Version}}'

$ docker version --format '{{json .}}'

docker info

docker top

Affiche le pid d'un conteneur :

$ docker top mon_conteneur

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

Met à jour la configuration d'un conteneur :

$ docker update --cpu-shares 512 abebf7571666

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

Affiche les statistiques d'un conteneur :

$ docker stats 2d5e8999b138

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

Affiche les réseaux disponibles :

$ docker network ls --no-trunc --filter driver=bridge

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

Supprime un réseau existant :

$ 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

Liste les volumes :

$ docker volume ls

docker volume create

Crée un nouveau volume :

Il existe des plugins additionnel pour drivers Netapp par exemple.

$ 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

Affiche les informations d'un volume :

$ docker volume inspect gigix

docker volume rm

Supprime un volume :

$ docker volume rm gigix

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

Quitte le docker swarm :

$ 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

Liste les noeuds swarm :

$ 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

docker node promote

Passe un worker en manager :

$ docker node promote node01

docker node demote

Passe un manager en worker :

$ 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

Liste les services :

$ docker service ls

docker service create

Crée un service :

$ 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

Scaling pour un service :

$ docker service scale backend=3 frontend=5

docker service rm

Supprime un service :

$ docker service rm redis

docker service update

Met à jour un service :

$ docker service update --limit-cpu 2 redis

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

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

Arrête l'ensemble des conteneurs du service :

$ docker-compose stop

$ docker-compose stop web -t 30

docker-compose start

Démarre l'ensemble des conteneurs du service :

$ docker-compose start

$ docker-compose start web

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

docker-compose version

systeme/docker.1477911544.txt.gz · Dernière modification : 2016/10/31 10:59 de root