Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
13 mars 2016




docker

docker

Interface de gestion d'image et de conteneur

   docker a 2 fonctions distincts. Il est utilisé pour démarrer le service Docker et de lancer l'interface en ligne de commande. Docker est donc à la fois un serveur et un client. docker daemon lance le service docker. Le CLI a 30 commandes. Les commandes sont listées ci-dessous et chacun a sa propre page d'aide.

OPTIONS

--config="" Spécifie l'emplacement des fichiers de configuration du client docker. Défaut: /.docker
-D, --debug=true|false Active le mode débug. Défaut: false
-H, --host=[unix:///var/run/docker.sock]: tcp:[host]:[port][path] ou unix://[/path/to/socket] Les sockets d'écoute en mode service. Si le port tcp n'est pas spécifié, le défaut est 2375 quand --tls est off, ou 2376 qui --tls est on, ou --tlsverify est spécifié.
-l, --log-level="debug|info|warn|error|fatal" Définis le niveau de log. Défaut: info
--tls=true|false Utilise TLS; implique --tlsverify. Défaut: false
--tlscacert=/.docker/ca.pem Ne valide que les certificats signés par cette CA
--tlscert=/.docker/cert.pem Certificat à utiliser
--tlskey=/.docker/key.pem Clé TLS
--tlsverify=true|false Utilise TLS et vérifie le paire. Défaut: false

Commandes

attach Attache au conteneur en cours
build Construit une image depuis un Dockerfile
commit Créé une nouvelle image depuis les changements d'un conteneur
cp copie les fichiers/répertoires entre un conteneur et le système de fichier local.
create Créer un nouveau conteneur
diff inspect les changements dans le système de fichier d'un conteneur
events Lis les événements temps réel depuis le serveur
exec Lance une commande dans un conteneur
export Envoie le contenu d'un conteneur comme archive tar
history Affiche l'historique d'une image
images Liste les images
import Créer un nouveau système de fichier image depuis le contenu d'un tar.
info Affiche des informations du système
inspect Retourne des informations bas niveau d'un conteneur ou d'une image
kill Termine un conteneur.
load Charge une images depuis une archive tar
login Se logger à un registre Docker
logout terminer la session d'un registre Docker
logs Rapporte les logs d'un conteneur
pause Pause tous les processus dans un conteneur
port Recherche le port publique qui est natté à un port privé
ps Liste les conteneurs
pull récupère une image ou un dépôt d'un registre Docker
push envoie une image ou un dépôt d'un registre Docker
rename Renomme un conteneur
restart Redémarre un conteneur
rm Supprime un ou plusieurs conteneurs
rmi Supprime une ou plusieurs images
run Lance une commande dans un nouveau conteneur
save Sauve une image dans une archive tar
search Recherche une image dans l'index Docker
start Démarrer un conteneur
stats Affiche un flux de statistiques d'utilisation de ressource d'un ou plusieurs conteneurs
stop Stop un conteneur
tag Tag une image dans un dépôt
top Voir les processus fonctionnant dans un contenant
unpause Résume un conteneur en pause
version Affiche les informations de version de docker
wait Block jusqu'à ce que le conteneur s'arrête, et affiche son code de sortie.

Options du pilote exec

   Utiliser l'option --exec-opt permet de spécifier des options pour le pilote d'exécution. Les options suivantes sont disponibles:

native.cgroupdriver Spécifie a gestion des cgroups du conteneur. peut être cgroupfs ou systemd.
Client voir man docker-run
^
13 mars 2016




config.json

config.json

Fichier de configuration de Docker

   Par défaut, La ligne de commande Docker stocke sa configuration dans un répertoire appelé .docker dans le répertoire home. Docker gère la plupart des fichiers de configuration dans ce répertoire et ne devraient pas être modifiés. Cependant, on peut modifier config.json pour contrôler certains aspects du comportement de la commande docker.

   Actuellement, on peut modifier la commande docker en utilisant les variables d'environnement ou les options de la ligne de commande. On peut également utiliser les options dans le fichier config.json. En utilisant ces mécanismes, il faut garder en tête l'ordre de précédence. Les options de la ligne de commande on priorité sur les variables d'environnement, qui ont priorité sur config.json. Le fichier config.json stocke les propriétés encodé en JSON.

HttpHeaders Spécifie un jeu d'en-têtes à inclure dans tous les messages envoyés depuis le client Docker au service. Docker ne tente pas d'interpréter cet en-tête.
psFormat Spécifie le format par défaut pour la sortie docker ps.
detachKey Spécifie la séquence de touche par défaut pour détacher un conteneur.
imagesFormat Spécifie le format par défaut pour la sortie de docker images.

Exemple

{
    "HttpHeaders": {
        "MyHeader": "MyValue"
    },
    "psFormat": "table {{.ID}}\\t{{.Image}}\\t{{.Command}}\\t{{.Labels}}",
    "imagesFormat": "table {{.ID}}\\t{{.Repository}}\\t{{.Tag}}\\t{{.CreatedAt}}",
    "detachKeys": "ctrl-e,e"
}

^
13 mars 2016




Dockerfile

Dockerfile

Automatiser la création d'image Docker

   Le fichier Dockerfile est un fichier de configuration qui automatise les étapes de création d'une image Docker. C'est similaire à un Makefile. Docker lit les instructions du fichier Dockerfile et automatise les étapes pour créer l'image. Pour construire une image, créer un fichier appelé Dockerfile. Utiliser ensuite docker build en utilisant le chemin du répertoire qui contient le Dockerfile comme argument.

Format

FROM image
FROM image:tag
FROM image@digest Le jeu d'instructions FROM définis l'image de base pour les instructions suivantes. Un Dockerfile valide doit avoir l'instruction FROM en premier.

        - FROM doit être la première instruction dans le Dockerfile
        - FROM peut apparaître plusieurs fois dans un Dockerfile
        - Si aucun tag n'est donné, Docker applique le tag latest, s'il n'existe pas, retourne une erreur
        - Si aucun hash n'est donné, Docker applique le tag latest, s'il n'existe pas, retourne une erreur

MAINTAINER Définis l'auteur pour les images générées. Utile pour fournir une URL ou un email
RUN ‹command›
RUN ["executable", "param1", "param2"] Éxécuter des commandes dans une nouvelle couche en haut de l'image courante et retourne le résultat.
CMD ["executable", "param1", "param2"]`
CMD ["param1", "param2"]`
CMD command param1 param2 Il devrait y avoir seulement un CMD dans un Dockerfile. Fournis des défauts pour un conteneur. Ces défauts peuvent inclure un exécutable. Si omis, un ENTRYPOINT doit être spécifié.
LABEL ‹key›=‹value› [‹key›=‹value› ...]
LABEL ‹key›[ ‹value›] Ajoute des métadonnées à une image. Un label est une paire de clé/valeur.
EXPOSE ‹port› [‹port›...] Informe Docker que le conteneur écoute sur des ports réseaux spécifiés. Docker utilise cette information pour interconnecter les conteneurs en utilisant des liens et pour définir les redirections de port dans le système hôte.
ENV ‹key› ‹value› Définis des variables d'environnement
ADD ‹src› ‹dest›
ADD ["‹src›",... "‹dest›"] Permet de copier des fichiers et répertoires
COPY ‹src› ‹dest›
COPY ["‹src›",... "‹dest›"] Permet de copier des fichiers dans le système de fichier du conteneur.
ENTRYPOINT ["executable", "param1", "param2"]`
ENTRYPOINT command param1 param2 Permet de configurer un conteneur qui peut être lancé comme un exécutable.
VOLUME ["/data"] Créé un point de montage avec le nom spécifié et le marque comme volume monté en interne.
USER daemon Définis le username ou UID à utiliser pour les commandes suivantes.
WORKDIR /path/to/workdir Définis le répertoire courant de travail.
ARG ‹name›[=‹default value›] Définis une variable que les utilisateurs peuvent passer au builder avec docker build --build-arg.
ONBUILD [INSTRUCTION] Ajoute une instruction déclencheur à une image. Le trigger est exécuté à la fin, quand l'image est utilisée comme base pour un autre build. Docker exécute le trigger dans le contexte du flux de build, comme s'il existait immédiatement après l'instruction FROM.
^
13 mars 2016




docker-wait

docker-wait

Attend qu'un conteneur s'arrête, puis affiche son code de sortie

Exemple:
docker run -d fedora sleep 99
docker wait 079b83f558a2bc

^
13 mars 2016




docker-volume-rm

docker-volume-rm

Supprimer un volume

Supprime un ou plusieurs volumes. Il n'est pas possible de supprimer un volume utilisé par un conteneur.
docker volume rm hello

^
13 mars 2016




docker-volume-ls

docker-volume-ls

Lister les volumes

   Liste tous les volumes. --filter permet de filtrer au format key=value.

OPTIONS

-f, --filter="" permet de filtrer la sortie. peut être spécifié plusieurs fois.
-q, --quiet=true|false Affiche seulement les noms des volumes
^
13 mars 2016




docker-volume-inspect

docker-volume-inspect

Afficher des informations sur un volume

   Retourne des informations sur un ou plusieurs volumes. Par défaut, cette commande affiche le résultant dans un tableau JSON.

OPTIONS

-f, --format="" formatte la sortie en utilisant le template Go
^
13 mars 2016




docker-volume-create

docker-volume-create

Créer un nouveau volume

Créer un nouveau volume que les conteneur peuvent utiliser. Si un nom n'est pas spécifié, Docker génère un nom aléatoire. Le volume est dabord créé, puis configuré, par exemple:
docker volume create --name hello
docker run -d -v hello:/world busybox ls /world
Le montage est créé dans le répertoire /src du conteneur. Docker ne supporte pas les chemins relatifs pour les points de montages dans le conteneur.

   Plusieurs conteneurs peuvent utiliser le même volume dans la même période de temps. C'est utile si 2 conteneurs doivent accéder à des données partagées.

Options spécifiques au pilote

Certains pilotes acceptent des options pour personnaliser la création de volume, avec l'option --opt:
docker volume create --driver fake --opt tardis=blue --opt timey=wimey
Ces options sont passées directeent au pilote. Le pilote embarqué local n'accepte aucune option.

OPTIONS

-d, --driver="local" Spécifie le pilote à utiliser
--name="" Nom pour le volume
-o, --opt=[] Options spécifiques au pilote
^
13 mars 2016




docker-version

docker-version

Affiche les informations de version de docker

OPTIONS

-f, --format="" Formatte la sortie en utilisant le template go donné.

Exemples

Afficher la version de Docker
docker version
Afficher la version du serveur
docker version --format '{{.Server.Version}}'
Afficher tous les champs disponibles
docker versions --format '{{json .}}'
^
13 mars 2016




docker-unpause

docker-unpause

Relance tous les processus dans un conteneur en pause

   Cette commande utilise les cgroups freezer pour relancer tous les processus dans un conteneur.

^
13 mars 2016




docker-top

docker-top

Afficher les processus en cours d'exécution dans un conteneur

   Les options peuvent être une des options que l'on passerai à la commande linux ps.

^
13 mars 2016




docker-tag

docker-tag

Tag une image dans un dépôt

   Assigne un nouvel alias à une image dans un dépôt. Un alias réfère au nom de l'image inclant le tag optionnel après ':'.

OPTIONS

REGISTRY_HOST Nom d'ĥôte du dépôt si requis
USERNAME Nom d'utilisateur pour l'image
NAME Le nom de l'image
TAG Le tag à assigner

Exemple

Donner un nouvel alias à une image:
docker tag 0e5574283393 fedora/httpd:version1.0
idem pour un dépôt privée:
docker tag 0e5574283393 myregistryhost:5000/fedora/httpd:version1.0
^
13 mars 2016




docker-stop

docker-stop

Arrêter un conteneur en envoyant SIGTERM, puis SIGKILL

OPTIONS

-t, --time=10 Nombre de secondes à attendre pour que le conteneur se termine avec de le tuer. Défaut: 10 secondes
^
13 mars 2016




docker-stats

docker-stats

Affiche des statistiques sur l'utilisation des ressources d'un conteneur

OPTIONS

-a, --all=true|false Affiche tous les conteneurs. Seul les conteneurs en cours d'exécution sont affichés par défaut. Défaut: false
--no-stream=true|false Désactive le monitoring des stats et n'affiche qu'un instantanné. Défaut: false
^
13 mars 2016




docker-start

docker-start

Démarrer un ou plusieurs conteneurs

OPTIONS

-a, --attach=true|false Attache la sortie du conteneur à STDOUT et STDERR et transfert tous les signaux au processus. Défaut: false
--detach-keys="" Remplace la séquence de touche pour détacher un conteneur.
-i, --interactive=true|false Attache STDIN du conteneur. Défaut: false.
^
13 mars 2016




docker-search

docker-search

Rechercher des images dans Docker Hub

   Recherche des images qui correspondent au critère. La table d'images retournée affiche le nom, la description, et le nombre d'étoiles, si elle est officielle et si elle est automatisée.

OPTIONS

--automated=true|false Affiche seulement les builds automatisés. Défaut: false
--no-trunc=true|false Ne tronque pas la sortie. Défaut: false
-s, --stars=X Affiche seulement avec au moins X étoiles. Défaut: 0

Exemples

Recherche les images avec le terme fedora:
docker search -s 3 fedora
Rechercher les images automatisée:
docker search --automated -s 1 fedora
^
13 mars 2016




docker-save

docker-save

Sauve une image dans une archive tar

   Produit un dépôt tar sur la sortie standard. Contient toutes les couches parent, et tous les tags + versions, ou spécifiés.

OPTIONS

-o, --output="" Écrit dans un fichier au lieu de la sortie standard

Exemples

Sauver toutes les images de dépôt fedora et sauver la dernière image fedora dans une autre archive:
docker save fedora › fedora-all.tar
docker save --output=fedora-latest.tar fedora:latest
^
13 mars 2016




docker-run

docker-run

Lancer une commande dans un nouveau conteneur

   Lance un processus dans un nouveau conteneur, avec son propre système de fichier, son propre réseau, et sa propre arborescence isolée. l'image qui démarre le processus peut définir des défaut qui sont liés au processus qui sera lancé dans le conteneur, le réseau à exposer, et plus, mais docker run donne un contrôle final à l'opérateur ou d'administrateur qui a lancé le conteneur depuis l'image. Pour cette raison, docker run a plus d'options que d'autres commande docker. Si l'image n'est pas déja chargée, elle est téléchargée, et toutse les dépendences, depuis le dépot, de la même manière que docker pull.

OPTIONS

-a, --attach=[] Attache à STDIN, STDOUT ou STDERR. En mode foreground.
--add-host=[] Ajoute un mappage host-to-IP personnalisé (host:ip). Ajoute une ligne à /etc/hosts. peut être spécifié plusieurs fois.
--blkio-weight=0 Poid IO entre 10 et 1000
--blkio-weight-device=[] Poid IO au format DEVICE_NAME:WEIGHT
--cpu-shares=0 Partage CPU
--cap-add=[] Ajouter des capabilities Linux
--cap-drop=[] Supprimer de capabilities Linux
--cgroup-parent="" Chemin des cgroups sous lesquels créer le conteneur. Si le chemin n'est pas absolu, le chemin est relatif aux cgroups du processus init.
--cidfile="" Écrit l'ID de conteneur dans le fichier
--cpu-period=0 Limite la période CFS
--cpuset-cpus=CPUSET-CPUS CPU dans lesquels autoriser l'exécution
--cpuset-mems="" Nœuds mémoire autorisés.
--cpu-quota=0 Limite le quota CPU CFS
-d, --detach=true|false Lance de conteneur en tâche de fond et affiche l'ID du conteneur. défaut: false
--detach-keys="" Change la séquence de touche pour détacher le conteneur. Défaut: CTRL-p CTRL-q.
--device=[] Un périphérique hôte pour le conteneur (ex --device=/dev/sdc:/dev/xvdc:run)
--device-read-bps=[] Limite le taux de lecture d'un périphérique ( ex --device-read-bps=/dev/sda:1mb)
--device-read-iops Limite le taux de lecture d'un périphérique (ex --device-read-iops=/dev/sda:1000)
--device-write-bps=[] Limite le taux d'écriture d'un périphérique ( ex --device-write-bps=/dev/sda:1mb)
--device-write-iops Limite le taux d'écriture d'un périphérique (ex --device-write-iops=/dev/sda:1000)
--dns-search=[] Définis les domaines de recherche DNS.
--dns-opt=[] Définis les options DNS
--dns=[] Définis les serveurs DNS
-e, --env=[] Définis des variables d'environnement.
--entrypoint="" Remplace l'ENTRYPOINT de l'image
--env-file=[] Line un fichier de variables d'environnements
--expose=[] Expose un port, une une plage de ports informant Docker que le conteneur écoute sur les ports spécifiés. Docker utilise cette information pour interconnecter les conteneurs en utilisant des liens et pour définir la redirection de port dans le système hôte.
--group-add=[] Ajoute des groupes additionnels à lancer
-h, --hostname="" nom d'hôte du conteneur
-i, --interactive=true|false Garde STDIN ouvert même s'il n'est pas attaché. défaut: false
--ip="" Définis l'adresse IPv4 de l'interface du conteneur, uniquement avec --net pour les réseaux utilisateurs
--ip6="" Définis l'adresse IPv6 de l'interface du conteneur, uniquement avec --net pour les réseaux utilisateurs
--ipc="" Créé un espace de nom IPC privé pour le conteneur
--isolation="default" spécifique le type de technologie d'isolation utilisée par les conteneurs
-l, --label=[] Définis les métadonnées du conteneur (ex: --label com.example.key=value)
--kernel-memory="" Limit la mémoire kernel. (0 = illimité)
--label-file=[] Lit un fichier de labels
--link=[] Ajoute un lien vers un autre conteneur sous la forme ‹nom ou id›:alias.
--log-driver="json-file|syslog|journald|gelf|fluentd|awslogs|splunk|none" Pilote de logging pour le conteneur. La commande docker logs ne fonctionne que pour les pilotes json-file et journald.
--log-opt=[] options spécifique au pilote de logging
-m, --memory="" Limite mémoire
--memory-reservation="" Limite soft
--memory-swap="LIMIT" Une valeur limite égale à la mémoire plus le swap. Doit être utilisé avec -m.
--mac-address="" L'adresse mac de conteneur
--name="" Assigne un nom au conteneur au format UUID long, UUID court, ou un nom.
--net="bridge" Définis le mode réseau pour le conteneur (bridge, none, container:‹name|id›, host, ‹network-name›|‹network-id›
--net-alias=[] ajoute un alias réseau pour le conteneur
--oom-kill-disable=true|false Active ou non le OOM Killer pour le conteneur
--oom-score-adj="" Ajustement OOM de l'hôte pour le conteneur (-1000 à 1000)
-P, --publish-all=true|false Publie tous les ports exposés aux ports aléatoire dans les interfaces de l'hôte. Défaut: false
-p, --publish=[] Publie le port d'un conteneur, ou une plage de port, à l'hôte (Format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort)
--pid=host Définis de mode PID pour le conteneur (host: utilise l'espace de nom PID de l'hôte, non sécurisé)
--uts=host Définis le mode UTS pour le conteneur (host: utilise l'espace de noms UTS dans le conteneur, non sécurisé)
--privileged=true|false Donne des priviléges étendus à ce conteneur. Défaut: false
--read-only=true|false Mounte le système de fichier racine du conteneur en lecture seule.
--restart="no" Stratégie de redémarrage quand le conteneur se termine. (no, on-failure[:max-retry], always, unless-stopped)
-rm=true|false Supprime automatiquement le conteneur quand il se termine. incompatible avec -d. défaut: false
--security-opt=[] Options de sécurité

        "label:user:USER" Définis le label utilisateur pour le conteneur
        "label:role:ROLE" Définis le label rôle pour le conteneur
        "label:type:TYPE" Définis le label type pour le conteneur
        "label:level:LEVEL" Définis le label level pour le conteneur
        "label:disable" Désactive le confinement de label pour le conteneur

--stop-signal=SIGTERM Signal pour stopper un conteneur
--shm-size="" Taille de /dev/shm. format: ‹number›‹unit›
--sig-proxy=true|false signaux proxy reçus au processus (mode non-TTY uniquement). SIGCHLD, SIGSTOP, SIGKILL ne sont pas proxifiés. Défaut: true
--memory-swappiness="" Comportement de la memory swappiness du conteneur (0 à 100)
-t, --tty=true|false Alloue un pseudo-TTY. défaut: false
--tmpfs=[] Créé un montage tmpfs
-u, --user="" Définis le username ou l'UID utilisé et optionnellement le group ou GID pour la commande spécifiée
--ulimit=[] Options ulimit
-v|--volume[=[[HOST-DIR:]CONTAINER-DIR[:OPTIONS]]] Créé un montage. avec -v /HOST-DIR:/CONTAINER-DIR, Docker monte /HOST-DIR dans l'hôte dans /CONTAINER-DIR dans le conteneur. Si HOST-DIR est omis, Docker créé un nouveau volume dans l'hôte. par défaut, les montages sont privés (non-visibles dans l'hôte). Peut être spécifié plusieurs fois.
--volume-driver="" Pilote de volume du conteneur. Ce pilote créé les volumes spécifié soit avec l'instruction VOLUME du dockerfile, ou depuis l'option -v.
--volumes-from=[] Monte les volumes depuis les conteneurs spécifiés.
-w, --workdir="" Répertoire de travail dans le conteneur

Code de sortie

   Le code de sortie de docker run donne des information sur la raison de l'erreur du conteneur ou pourquoi il s'est terminé.

125 Si l'erreur vient du service Docker lui-même
126 Si la commande dans le conteneur ne peut être lancée
127 Si la commande dans le conteneur ne peut être trouvée
Autres code Contient le code de sortie de la commande

Exemples

Lancer un conteneur en mode lecture seule:
docker run --read-only --tmpfs /run --tmpfs /tmp -i -t fedora /bin/bash
Exposer les messages de log du conteneur dans les logs de l'hôte:
docker run -v /dev/log:/dev/log -i -t fedora /bin/bash
Attacher un ou plusieurs STDIN, STDOUT, STDERR:
docker run -a stdin -a stdout -i -t fedora /bin/bash

Lier les conteneurs

Cette section décrit comment lier les conteneur sur le réseau par défaut. La fonctionnalité link permet à plusieurs conteneurs de communiquer entre eux. Par exemple, un conteneur dont Dockerfile a exposé le port 80 peut être lancés comme suit:
docker run --name=link-test -d -i -t fedora/httpd
Un second conteneur, dans ce cas nommé linker, peut communiquer avec le conteneur httpd:
docker run -t -i --link=link-test:lt --name=linker fedora /bin/bash
Maintenant le conteneur linker et lié au conteneur link-test avec l'alias lt. Lancer la commande env dans le conteneur linker montre les valiables d'environnement:
# env
HOSTNAME=668231cb0978
TERM=xterm
LT_PORT_80_TCP=tcp://172.17.0.3:80
LT_PORT_80_TCP_PORT=80
LT_PORT_80_TCP_PROTO=tcp
LT_PORT=tcp://172.17.0.3:80
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LT_NAME=/linker/lt
SHLVL=1
HOME=/
LT_PORT_80_TCP_ADDR=172.17.0.3
_=/usr/bin/env

Mapper les ports pour une utilisation externe

Le port exposé d'une application peut être mappée sur un port hôte en utilisant le flag -p. Par exemple, le port 80 peut être mappé au port 8080:
docker run -p 8080:80 -d -i -t fedora/httpd

Créer et monter un volume

De nombreuses application nécessitent le partage de données persistantes entre de nombreux conteneurs. Docker permet de créer un Data Volume Container que d'autres conteneurs peuvent monter. Par exemple, créer un conteneur qui contient les répertoires /var/volume1 et /tmp/volume2. L'image doit contenir ces répertoires, donc des instructions mkdir sont nécessaires:
docker run --name=data -v /var/volume1 -v /tmp/volume2 -i -t fedora-data true
docker run --volumes-from=data --name=fedora-container1 -i -t fedora bash
Plusieurs --volumes-from vont monter les volumes de données. Et il est possible de monter les volumes qui vient d'un conteneur DATA dans un autre conteneur:
docker run --volumes-from=fedora-container1 --name=fedora-container2 -i -t fedora bash

Monter des volumes externes

Pour monter un répertoire hôte comme volume conteneur, spécifier le chemin absolue:
docker run -v /var/db:/data1 -i -t fedora bash
En utilisant SELinux, vérifier que l'hôte n'a pas connaissance de la stratégie SELinux du conteneur. Dans l'exemple suivant, SELinux est enforced, le répertoire /var/db n'est pas en écriture pour le conteneur. Au moment d'écrire ce man, la commande suivante doit être lancée pour que la stratégie SELinux soit attachée correctement au répertoire de l'hôte.
chcon -Rt svirt_sandbox_file_t /var/db

Utiliser un labeling de sécurité alternatif

--security-opt permet de changer le schéma de labelisation par défaut pour chaque conteneur. Par exemple, on peut spécifier un niveau NCS/MLS. Spécifier le niveaux dans la commande suivante permet de partager le même contenu entre les conteneurs:
docker run --security-opt label:level:s0:c100,c200 -i -t fedora bash
Un exemple MLS peut être:
docker run --security-opt label:level:TopSecret -i -t rhel7 bash
Pour désactiver le labeling de sécurité pour ce conteneur:
docker run --security-opt label:disable -i -t fedora bash
Pour resserrer la stratégie de sécurité sur les processus dans un conteneur:
docker run --security-opt label:type:svirt_apache_t -i -t centos bash
^
13 mars 2016




docker-rmi

docker-rmi

Supprimer une ou plusieurs images

Exemple

Supprime une ou plusieurs images depuis un nœud hôte. Cela ne supprime pas les images d'un registre. On ne peut pas supprimer une image d'un conteneur en cours d'exécution sauf avec -f.

OPTIONS

-f, --force=true|false Force la suppression de l'image. Défaut: false
--no-prune=true|false Ne supprime pas les parents non-taggés. Défaut: false
^
13 mars 2016




docker-rm

docker-rm

Supprimer un ou plusieurs conteneurs

Exemple

docker rm supprime un ou plusieurs conteneurs depuis un nœud hôte. Cela ne supprime pas les images. On ne peut pas supprimer un conteneur en cours d'exécution sauf avec -f.

OPTIONS

-f, --force=true|false Force la suppression d'un conteneur en cours d'exécution (utilise SIGKILL). Défaut: false
-l, --link=true|false Supprime le lien spécifié et pas le conteneur. Défaut: false
-v, --volumes=true|false Supprime les volumes associés avec le conteneur. Défaut: false

Exemples

Supprimer un conteneur en utilisant sont ID:
docker rm abebf7571666
Supprimer un conteneur et tous ses volumes associés. Noter que si un volume a été spécifié avec un nom, il n'est pas supprimé:
docker rm -v redis
^
13 mars 2016




docker-restart

docker-restart

Redémarrer un conteneur

OPTIONS

-t, --time=10 Nombre de secondes de tentative d'arrêt avant de tuer le conteneur. Une fois tué, il est redémarré. Défaut: 10 secondes
^
13 mars 2016




docker-rename

docker-rename

Renommer un conteneur

   Cette commande n'a pas d'option

^
13 mars 2016




docker-push

docker-push

Upload une image ou un dépôt dans un registre

   Envoie une image ou un dépôt vers un registre.

Exemples

Upload une nouvelle image en spécifiant son ID et en la nommant:
docker commit c16378f943fe rhel-httpd
Puis tager l'image avec le nom d'hôte et l'IP:port du registre:
docker tag rhel-httpd registry-host:5000/myadmin/rhel-httpd
Puis envoyer l'image:
docker push registry-host:5000/myadmin/rhel-httpd
Vérifier que cela a fonctionné:
docker images
^
13 mars 2016




docker-pull

docker-pull

Télécharger une image ou un dépôt depuis un registre

   Cette commande récupère une images ou un dépôt depuis un registre. S'il y a plus d'une image pour un dépôt, toutse les images sont récupérée incluant les tags.

OPTIONS

-a, --all-tags=true|false Télécharge toutes les images taggées dans le dépôt. Défaut: false

Exemples

récupérer un dépôt avec plusieurs images avec tous les tags:
docker pull --all-tags fedora
Récupérer une image depuis un dépôt publique:
docker pull registry.hub.docker.com/fedora:20
^
13 mars 2016




docker-ps

docker-ps

Lister les conteneurs. Par défaut, ne liste que les conteneurs en cours d'exécution

OPTIONS

-a, --all=true|false Affiche tous les conteneurs. Défaut: false
-f, --filter=[] Filtre basé sur les conditions (exited=‹int›, label=‹key›, label=‹key›=‹value›, status=(created|restarting|running|paused|exited|dead), name=‹string›, id=‹ID›, before=(‹container-name›|‹container-id›), since=(‹container-name›|‹container-id›), ancestor=(‹image-name›[:tag]|‹image-id›| (image@digest)) )
--format="TEMPLATE" Formatte la sortie en utilisant le template Go
-l, --latest=true|false Affiche seulement le dernier conteneur créé. Défaut: false
-n=-1 Affiche les n derniers conteneurs créés (inclus tous les états)
--no-trunc=true|false Ne tronque pas la sortie
-q, --quiet=true|false Affiche seulement les ID. Défaut: false
-s, --size=true|false Affiche la taille de fichiers totale. Défaut: false

Exemples

Afficher tous les conteneurs:
docker ps -a
Afficher seulement les ID des conteneurs:
docker ps -a -q
Afficher seulement les ID des conteneur dont le nom est MyContainer:
docker ps -a -q --filter=name=determined_torvalds
Afficher les conteneurs avec leurs commandes:
docker ps --format "{{.ID}}: {{.Command}}"
Afficher les conteneurs avec leurs labels dans une table:
docker ps --format "table {{.ID}}\t{{.Labels}}"
Afficher les conteneurs avec leur label node dans une table:
docker ps --format 'table {{.ID}}\t{{(.Label "com.docker.swarm.node")}}'
^
13 mars 2016




docker-port

docker-port

Liste les mappages de port pour le conteneur spécifié

   Liste les mappages de port ou recherche le port publique qui est natté au port privé.

^
13 mars 2016




docker-pause

docker-pause

Pause tous les processus dans un conteneur

   Cette commande utilise les cgroups freezer pour suspendre tous les processus dans un conteneur.

^
13 mars 2016




docker-network-rm

docker-network-rm

Supprimer un ou plusieurs

Pour supprimer un réseau, déconnecter d'abord tout conteneur attaché:
docker network rm my-network
Pour supprimer plusieurs réseaux d'un coup:
docker network rm 3695c422697f my-network

^
13 mars 2016




docker-network-ls

docker-network-ls

Lister les réseaux

   Liste tous les réseaux que le service connait. Inclus les réseaux connectés sur plusieurs hôte dans un cluster. L'option --no-trunc affiche l'id complet des réseaux. -f ou --filter filtre la sortie au format key=value. S'il y a plus d'un filtre, agit comme un filtre OR.

type

Le fitre type support 2 valeurs: builtin qui affiche les réseaux prédéfinis (bridge, none, host), et custom qui affiche les réseaux utilisateur. Le filtre suivant affiche les réseaux utilisateurs:
docker network ls --filter type=custom
Ce filtre permet de supprimer tous les réseaux utilisateurs:
docker network rm `docker network ls --filter type=custom -q`

Name

Le filtre name correspond à tout ou partie du nom d'un réseau. Le filtre suivant matche tous les réseaux avec un nom contenant la chaîne foobar:
docker network ls --filter name=foobar

ID

Le filtre id matche tout ou partie de l'ID d'un réseaux:
docker network ls --filter id=63d1ff1f77b07ca51070a8c227e962238358bd310bde1529cf62e6c307ade161

OPTIONS

-f, --filter=[] Filtre la sortie basée sur la condition fournie
--no-trunc=true|false Ne tronque pas la sortie
-q, --quiet=true|false N'affiche que les ID
^
13 mars 2016




docker-network-inspect

docker-network-inspect

Inspecter un réseau

Retourne des informations sur un ou plusieurs réseaux. Par défaut, cette commande affiche le résultat dans un objet JSON. par exemple, si 2 conteneurs sont connectés à un réseau bridge:
sudo docker run -itd --name=container1 busybox
f2870c98fd504370fb86e59f32cd0753b1ac9b69b7d80566ffc7192a82b3ed27
sudo docker run -itd --name=container2 busybox
bda12f8922785d1f160be70736f26c1e331ab8aaf8ed8d56728508f2e2fd4727

La commande inspect affiche les conteneurs, par id:
sudo docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "b2b1a2cba717161d984383fd68218cf70bbbd17d328496885f7c921333228b0f",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                 "Subnet": "172.17.42.1/16",
                 "Gateway": "172.17.42.1"
                }
            ]
        },
        "Containers": {
            "bda12f8922785d1f160be70736f26c1e331ab8aaf8ed8d56728508f2e2fd4727": {
                "Name": "container2",
                "EndpointID": "0aebb8fcd2b282abe1365979536f21ee4ceaf3ed56177c628eae9f706e00e019",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "f2870c98fd504370fb86e59f32cd0753b1ac9b69b7d80566ffc7192a82b3ed27": {
                "Name": "container1",
                "EndpointID": "a00676d9c91a96bbe5bcfb34f705387a33d7cc365bac1a29e4e9728df92d10ad",
                "MacAddress": "02:42:ac:11:00:01",
                "IPv4Address": "172.17.0.1/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
         "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        }
    }
]

Retourner les informations sur le réseau utilisateur:
docker network create simple-network
69568e6336d8c96bbf57869030919f7c69524f71183b44d80948bd3927c87f6a
docker network inspect simple-network
[
    {
        "Name": "simple-network",
        "Id": "69568e6336d8c96bbf57869030919f7c69524f71183b44d80948bd3927c87f6a",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                 "Subnet": "172.22.0.0/16",
                 "Gateway": "172.22.0.1/16"
                }
            ]
        },
        "Containers": {},
        "Options": {}
    }
]

OPTIONS

-f, --format="" Formatte la sortie en utilisant le templace Go
^
13 mars 2016




docker-network-disconnect

docker-network-disconnect

Déconnecter un conteneur d'un réseau

   déconnecter un conteneur d'un réseau:

OPTIONS

--force Force le conteneur à ce déconnecter du réseau
^
13 mars 2016




docker-network-create

docker-network-create

Créer un nouveau réseau

OPTIONS

--aux-address=map[] Adresses ipv4 ou ipv6 auxiliaires utilisée par le périphérique réseaux
-d, --driver=DRIVER Le pilote pour gérer le réseau ou l'overlay. Défaut: bridge
--gateway=[] passerelle IPv4 ou IPv6 pour le sous-réseaux maître
--internal Restreint l'accès externe au réseaux
--ip-range=[] Alloue une ip au conteneur dans une plage
--ipam-driver=default Pilote de gestion d'adresse ip
--ipam-opt=map[] Définis les options du pilote IPAM
-o, --opt=map[] Définis les options du pilote
--subnet=[] Sous-réseau au format CIDR qui représente un segment réseau

   Le pilote peut être bridge ou overlay, qui sont des pilotes intégrés. Un pilote tier peut également être spécifié. Sans l'option --driver, la commande créé automatiquement un bridge. En installant Docker Engine, un bridge est installé automatiquement. Ce réseau correspond au bridge docker0 sur lequel le moteur s'appuie. En lançant un nouveau conteneur avec docker run, il est automatiquement connecté à ce bridge. On ne peut pas le supprimer, mais on peut en créer de nouveaux.

   Les réseaux bridge sont des réseaux isolés sur une simple installation Engine. Pour créer un réseaux partagé avec plusieurs hôtes Docker, il faut créer un réseaux overlay. À la différence de bridge, overlay nécessite certaines conditions avant de pouvoir en créer un:

   L'accès à un magasin de clé-valeur. Engine support Consul, Etcd, et Zookeeper. Un clustre d'hôte avec une connectivité à ce store. Un Engine configuré correctement sur chaque hôte du cluster. Le service docker supporte les options suivantes pour le réseaux Docker: --cluster-store, --cluster-opt, et --cluster-advertise.

   C'est également une bonne idée, bien que non requis, d'installer Docker Swarn pour gérer le cluster. Swarn fournis une découverte sophistiquée et un gestionnaire de serveur qui peut assister l'implémentation.

Une fois les prérequis pour le réseau overlay préparé, il suffit de créer le réseau avec:
docker network create -d overlay my-multihost-network
Les noms de réseaux doivent être unique. Le service Docker tente d'identifier les conflicts de nommage mais ce n'est pas garantit.

Connecter des conteneurs

Au démarrage d'un conteneur utiliser --net pour se connecter à un réseaux. Cet exemple ajoute le conteneur busybox au réseau mynet:
docker run -itd --net=mynet busybox
Pour ajouter un conteneur à un réseau après que le conteneur soit démarré, utiliser docker network connect. Il est possible de connecter plusieurs conteneurs sur le même réseau. Une fois connectés, les conteneurs peuvent communiquer en eux.

Spécifier des options avancée

En créant un réseaux, Engine créé un sous-réseau sous le réseau par défaut. Ce sous-réseaux n'est pas une sous-division d'un réseau existant. C'est purement dans un but d'adressage ip. Il est possible de changer et de spécifier des valeurs de sous-réseau directement en utilisant l'option --subnet. sur un bridge, on peut seulement créer un simple sous-réseau:
docker network create -d bridge --subnet=192.168.0.0/16 br0
Additionnellement, on peut également spécifier les options --gateway, --ip-range, et --aux-address
network create --driver=bridge --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 --gateway=172.28.5.254 br0
Si --gateway est omis, Engine en séléctionne un dans le pool. Pour les réseaux overlay et pour les plugins réseaux qui le supporte on peut créer plusieurs sous-réseauxs
docker network create -d overlay --subnet=192.168.0.0/16 --subnet=192.170.0.0/16 --gateway=192.168.0.100 --gateway=192.170.0.100 --ip-range=192.168.1.0/24 --aux-address a=192.168.1.5 --aux-address b=192.168.1.6 --aux-address a=192.170.1.5 --aux-address b=192.170.1.6 my-multihost-network

Mode réseau interne

Par défaut, en connectant un réseau à un réseau overlay, Docker connecte également un réseau bridge pour fournir la connctivité externe. Pour créer un réseau overlay isolé, spécifier l'option --internal
^
13 mars 2016




docker-network-connect

docker-network-connect

Connecter un conteneur à un réseau

Une fois connecté, le conteneur peut communiquer avec d'autres conteneurs dans le même réseau.
docker network connect multi-host-network container1
La commande docker run --net=‹network-name› permet de faire la même chose au démarrage du conteneur
docker run -itd --net=multi-host-network --ip 172.20.88.22 --ip6 2001:db8::8822 busybox
Si spécifié, l'adresse IP du conteneur est ré-appliqué quand un conteneur stoppé est redémarré. Si l'IP est occupé, le conteneur échoue, --ip-range permet de s'assurer de trouver une ip disponible:
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network
docker network connect --ip 172.20.128.2 multi-host-network container2

^
13 mars 2016




docker-logs

docker-logs

Récupère les logs présents pour un conteneur

   Cette commande ne garantie pas le temps d'exécution quand elle est combinée avec docker run. Cette commande ne fonctionne qu'avec les pilotes de log json-file et journald.

OPTIONS

-f, --follow=true|false Suit la sortie des logs. défaut: false
--since="" Affiche les logs depuis la date spécifiée
-t, --timestamps=true|false Affiche les horodatages. défaut: false
--tail="all" Affiche le nombre de ligne spécifié, à la fin des logs. défaut: all.
^
13 mars 2016




docker-logout

docker-logout

Se déconnecter d'un registre Docker

   Se déconnecter d'un registre Docker sur le serveur spécifié. L'URL peut être spécifiée par nom d'hôte.

^
13 mars 2016




docker-login

docker-login

S'enregistre ou se logger au registre Docker

   S'enregistrer ou se logger dans un registre Docker localisé sur le serveur spécifié. On peut spécifier une URL ou un nom d'hôte. Sans spécifier de serveur, la commande utiliser le registre Docker publique (https://registry-1.docker.io/). Pour obtenir un login/password pour ce registre, créer un compte sur Docker Hub. Nécessite l'utilisation de sudo ou d'être root, excepté lorsqu'on se connecte à un service distant. L'utilisateur est ajouté au groupe docker. Cela impacte la sécurité du système. Le groupe docker est équivalent à root.

OPTIONS

-e, --email="" Email
-p, --password="" Mot de passe
-u, --username="" Nom d'utilisateur
^
13 mars 2016




docker-load

docker-load

Charger une image depuis une archive tar ou STDIN

OPTIONS

-i, --input="" Lit l'archive tar au lieu de STDIN.
^
13 mars 2016




docker-kill

docker-kill

Terminer un conteneur en cours d'exécution en utilisant SIGKILL ou un signal spécifié

   Le principal processus dans chaque conteneur spécifié reçoit le signal SIGKILL our le signal spécifié.

OPTIONS

-s, --signal="KILL" Envoie le signal spécifié
^
13 mars 2016




docker-inspect

docker-inspect

Affiche les informations bas-niveau d'un conteneur ou d'une image

   Affiche toutes les informations disponible dans Docker pour un conteneur ou une image donnée. Par défaut, affiche dans un table JSON. Si le conteneur et l'image ont le même nom, retourne le conteneur.

OPTIONS

-f, --format="" formatte la sortie en utilisant le template Go
-s, --size Affiche la taille totale des fichiers si le type est un conteneur.
--type="container|image" Spécifie le type.

Exemples

Afficher les informations d'une image:
docker inspect --type=image rhel7
Afficher les information d'un conteneur:
docker inspect d2cc496561d6
Afficher l'adresse IP d'une instance de conteneur:
docker inspect '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' d2cc496561d6
Lister tous les ports liés:
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -› {{(index $conf 0).HostPort}} {{end}}' d2cc496561d6
Afficher la taille d'un conteneur:
docker inspect -s d2cc496561d6
^
13 mars 2016




docker-info

docker-info

Afficher des informations sur le système

Exemple

docker info
Containers: 14
    Running: 3
    Paused: 1
    Stopped: 10
Images: 52
Server Version: 1.9.0
Storage Driver: aufs
    Root Dir: /var/lib/docker/aufs
    Dirs: 80
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
    Volume: local
    Network: bridge null host
Kernel Version: 3.13.0-24-generic
Operating System: Ubuntu 14.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 2 GiB

^
13 mars 2016




docker-import

docker-import

Créé une image de système vide et importe le contenu d'un tarball

OPTIONS

-c, --change=[] Applique les instructions Dockerfile spécifiés (CMD|ENTRYPOINT|ENV|EXPOSE|ONBUILD|USER|VOLUME|WORKDIR)

Exemples

Importer depuis un emplacement distant:
docker import http://example.com/exampleimage.tgz example/imagerepo
Importer depuis un fichier local:
cat exampleimage.tgz | docker import - example/imagelocal
Importer avec un message commit:
cat exampleimage.tgz | docker import --message "New image imported from tarball" - exampleimagelocal:new
Importer dan docker:
cat exampleimageV2.tgz | docker import - example/imagelocal:V-2.0
Importer depuis un répertoire local:
tar -c . | docker import - exampleimagedir
Appliquel les instruction Dockerfile spécifiés en important l'image:
tar -c . | docker import -c="ENV DEBUG true" - exampleimagedir
^
13 mars 2016




docker-images

docker-images

Lister les images stockées dans le dépôt Docker local

   Par défaut, les images intermédiaires, utilisées durant la construction, ne sont pas listées. Une partie de la sortie, par exemple l'ID de l'image, est tronquée pour des raisons d'espace. Le titre REPOSITORY pour le premier titre peut être confus. C'est essentiellement le nom de l'image. Cependant, les tags peuvent être associés avec un nom.

OPTIONS

-a, --all=true|false Affiche toutes les images. Défaut: false
--digests=true|false Affiche les digests des images. Défaut: false
-f, --filter=[] Filtre la sortie. le filtre dangling=true trouve les images inutilisées. label=com.foo=amd64 filtre les images avec une valeur com.foo à amd64.
--format="TEMPLATE" Affiche les conteneur en utilisant le template Go. (.ID, .Repository, .Tag, .Digest, .CreatedSince, CreatedAt, .Size)
--no-trunc=true|false Ne tronque pas la sortie. Défaut: false
-q, --quiet=true|false Affiche seulement les ID. Défaut: false
^
13 mars 2016




docker-history

docker-history

Affiche l'historique d'une image

OPTIONS

-H, --human=true|false Affiche les tailles et les dates au format human readable. défaut: true
--no-trunc=true|false Ne tronque par la sortie. Défaut: false
-q, --quiet=true|false Affiche seulement l'ID numérique. Défaut: false
^
13 mars 2016




docker-export

docker-export

Exporte le contenu du système de fichier d'un conteneur dans une archive tar

OPTIONS

-o, --output="" Écrit dans un fichier au lieu de STDOUT
^
13 mars 2016




docker-exec

docker-exec

Lance une commande dans un conteneur en cours d'exécution

   La commande lancée est seulement exécutée en tant que processus principal du conteneur, et ne sera pas redémarré si le conteneur est redémarré. Si le conteneur est en pause, docker exec attend jusqu'à ce que le conteneur soit relancé

OPTIONS

-d, --detach=true|false Lance de conteneur en tâche de fond et affiche l'ID du conteneur. défaut: false
--detach-keys="" Change la séquence de touche pour détacher le conteneur. Défaut: CTRL-p CTRL-q.
--privileged=true|false Donne des priviléges étendus à ce conteneur. Défaut: false
-t, --tty=true|false Alloue un pseudo-TTY. défaut: false
-u, --user="" Définis le username ou l'UID utilisé et optionnellement le group ou GID pour la commande spécifiée
^
13 mars 2016




docker-events

docker-events

Affiche les événements depuis le serveur

   Récupère les information du service Docker. Les informations peuvent inclure un historique et les informations temps-réel. Les événements de conteneur reportés sont: attach, commit, copy, create, destroy, die, exec_create, exec_start, export, kill, oom, pause, rename, resize, restart, start, stop, top, unpause. Les images Docker reportent: delete, import, pull, push, tag, untag

OPTIONS

-f, --filter=[] Valeurs de filtre fournis (ex: event=stop)
--since="" Affiche tous les événements depuis le timestamp spécifié
--until="" Affiche tous les événement jusqu'au timestamp spécifié

Exemples

Écouter les événements Docker:
dockers events
Écouter les événements depuis une date donnée:
docker events --since '2015-01-28'
Afficher tous les événements générés dans les 3 dernières minutes:
docker events --since '3m'
^
13 mars 2016




docker-diff

docker-diff

Inspecter les changements dans le système de fichier d'un conteneur

Exemples

docker diff 1fdfd1f54c1b
^
13 mars 2016




docker-daemon

docker-daemon

Activer le mode service

OPTIONS

--api-cors-header="" Définis les en-têtes CORS dans l'API distante. Défaut: désactivé.
--authorization-plugin="" Définis les plugins d'autorisation à charger
-b, --bridge="" Attache les conteneurs à un bridge réseau existant
--bit="" Utiliser l'adresse en notation CIDR donnée pour la création du bridge0. Ne peut pas être utilisé avec -b
--cgroup-parent="" Définis le cgroup parent pour tous les conteneurs. Défatut: /docker pour le pilote cgroup fs, et system.slice pour le pilote cgroup systemd
--cluster-store="" URL du backend de stockage distribué
--cluster-advertise="" Spécifie la combinaison 'host:port' ou 'interface:port' que cette instance particulière devrait utiliser en s'annonçant au cluster. Le service est accessible via cette valeur.
--cluster-store-opt="" Spécifie les optins pour la magasin de clé/valeurs
--config-file="/etc/docker/daemon.json" Spécifie le fichier de configuration JSON à charger
-D, --debug=true|false Active le mode débug. Défaut: false
--default-gateway="" Adresse IPv4 de la passerelle par défaut du conteneur. Cette adresse doit faire partie du bridge, définis par --bip
--default-gateway-v6="" idem avec l'IPv6
--default-ulimit=[] Définis les ulimits pour les conteneurs
--disable-legacy-registry=true|false Ne pas contacter les registre legacy
--dns="" Forcer Docker à utiliser les serveurs DNS spécifiés
--dns-opt="" Options DNS à utiliser
--dns-search=[] Domaines DNS à utiliser
--exec-opt=[] Défins les options du pilote d'exécution.
--exe-root="" Chemin racine du pilote d'exécution Docker. Défaut: /var/run/docker
--fixed-cidr="" Sous-réseau IPv4. Ce sous-réseau doit être imbriqué dans le bridge définis par --bip
--fixed-cidr-v6="" Idem en ipv6
-G, --group="" Groupe pour assigner un socker unix spécifié pas -H. Défaut: docker
-g, --graph="" Chemin à utiliser comme racine du Docker runtime. Défaut: /var/lib/docker
-H, --host=[unix:///var/run/docker.sock] tcp://[host:port] à connecter ou unix://[/path/to/socket] ou fd://socketfd à utiliser. Peut être spécifiés plusieurs fois
--icc=true|false Autorise les communication inter-conteneur et l'hôte non-restreint. Si désactivé, les conteneurs peuvent être liés ensemble avec l'option --link. Défaut: true
--insecure-registry=[] Active la communication au registre non-sécure.
--ip="" Adresse IP par défaut à utiliser en se connectant aux ports du conteneur. Défaut: 0.0.0.0
--ip-forward=true|false Active l'IP forwarding dans l'hôte Docker. Défaut: true. Intéragit avec l'ip forwarding dans le kernel.
--ip-masq=true|false Acive l'IP masquerading pour la plage IP du bridge. Défaut: true
--iptables=true|false Active l'ajout de règles iptables par docker. Défaut: true
--ipv6=true|false Active le support d'IPv6. Défaut: false. Docker céé un bridge avec l'adresse fe80::1.
-l, --log-level="debug|info|warn|error|fatal" Niveau de log. Défaut: info
--label="[]" Labels key=valyue du service.
--log-driver="json-file|syslog|journald|gelf|fluentd|awslogs|none" Pilote pou les logs des conteneurs. Défaut: json-file.
--log-opt=[] options spécifiques au pilote de logs.
--mtu=0 Définis le mtu des conteneurs. Défaut: 0
-p, --pidfile="" Chemin à utiliser pour le fichier PID du service. Défaut: /var/run/docker.pid
--registry-mirror=‹scheme›://‹host› Àjoute un registre miroir à utiliser pour télécharger les images. peut être spécifié plusieurs fois
-s, --storage-driver="" Force Docker à utiliser le pilote de stockage spécifique.
--selinux-enabled=true|false Active le support selinux. Défaut: false. SELinux ne support pas actuellement le pilote de stockage overlay
--storage-opt=[] Définis les options du pilote de stockage.
--tls=true|false Utilise TLS
--tlscacert=/.docker/ca.pem Spécifie les certificats d'autorité
--tlscert=/.docker/cert.pem Chemin du certificat à utiliser
--tlskey=/.docker/key.pem Chemin de la clé à utiliser
--tlsverify=true|false Utilise TLS et vérifie le paire
--userland-proxy=true|false Gère l'implémentation du proxy dans l'espace utilisateur pour les communication inter-conteneur et externes. Défaut: true
--userns-remap=default|uid:gid|user:group|user|uid Active les espaces de nom utilisateur pour les conteneurs. default créé un nouvel utilisateur et groupe.

Option de pilote de stockage

   Docker utilise des backend de stockage (appelés graphdrivers) pour créer des conteneurs en écriture depuis les images. De nombreux backends utilisent des technologies de l'OS et peuvent être configurés.

   L'options --storage-opt permet de spécifier des options pour le backend. Le seul backend qui actuellement accèpte des options est devicemapper.

   Spécifiquement pour devicemapper, le défaut est un modèle loopback qui ne nécessite aucune pré-configuration, mais est inefficace. Ne pas l'utiliser en production.

   Pour utiliser au mieux devicemapper, vous devez avoir une version récente de LVM. Utiliser lvm pour créer un pool, puis utiliser --storage-opt dm.thinpooldev pour indiquer à Docker d'utiliser ce pool pour allouer des images et des conteneurs.

dm.thinpooldev Spécifie un périphérique de stockage block à utiliser pour le pool
dm.basesize Spécifie la taile à utiliser en créant le périphérique de base, qui limite la taille des images et des conteneurs. La valeur par défaut est 10G.
dm.fs Spécifie le type de système de fichier à utiliser pour le périphérique de base. (ext4 et xfs). Défaut: ext4.
dm.mkfsarg Spécifie les arguments supplémentaire mkfs à utiliser pour la création du périphérique de base
dm.mountopt Spécifie les options de montages à utiliser en montant les périphériques.
dm.use_deferred_removal Active l'utilisation de la suppression de périphérique différé si libdm et le pilote kernel supportent ce mécanisme.
dm.use_deferred_deletion Active l'utilisation de la suppression de périphérique différé pour les périphériques pool.
dm.loopdatasize Ne pas utiliser en production. spécifie la taille à utiliser en créant le fichier loopback pour le périphérique de données.
dm.loopmetadatasize Ne pas utiliser en production. Spécifie la taille à utiliser en créant le fichier loopback pour les métadonnées.
dm.blocksize Spécifie une taille de block personnalisé. Défaut: 64K
dm.blkdiscard Active l'utilisation de blkdiscard en supprimant les périphériques devicemapper. Désactivé par défaut à cause d'une latence additionnelle.
dm.override_udev_sync_check Par défaut, le backend devicemapper tente de se synchroniser avec udev pour le kernel linux. Cette option permet de désactiver cette synchronisation.

Options de stockage en cluster

   Le service utiliser libkv pour annoncer le nœud dans le cluster. Certains backend key/value supportent TLS, et les paramètres TLS client utilisées par le service peuvent être configurés avec --cluster-store-opt:

kv.cacertfile Certificats d'autorité au format PEM
kv.certfile Certificat PEM à utiliser
kv.keyfile Clé privée PEM à utiliser

Autorisation d'accès

   L'autorisation d'accès à Docker peut être étendue par des plugins d'autorisation. Il est possible d'utiliser plusieurs plugins d'autorisation en même temps, avec l'option --autorization.
^
13 mars 2016




docker-create

docker-create

Créer un nouveau conteneur

   Créér un nouveau conteneur basé sur l'image spécifiée et la prépare pour excécuter la commande spécifiée. L'ID du conteneur est affiché sur STDOUT. C'est similaire à docker run excepté que le conteneur n'est jamais démarré. Le status initial du conteneur créé avec docker create est 'created'

OPTIONS

-a, --attach=[] Attache à STDIN, STDOUT ou STDERR. En mode foreground.
--add-host=[] Ajoute un mappage host-to-IP personnalisé (host:ip). Ajoute une ligne à /etc/hosts. peut être spécifié plusieurs fois.
--blkio-weight=0 Poid IO entre 10 et 1000
--blkio-weight-device=[] Poid IO au format DEVICE_NAME:WEIGHT
--cpu-shares=0 Partage CPU
--cap-add=[] Ajouter des capabilities Linux
--cap-drop=[] Supprimer de capabilities Linux
--cgroup-parent="" Chemin des cgroups sous lesquels créer le conteneur. Si le chemin n'est pas absolu, le chemin est relatif aux cgroups du processus init.
--cidfile="" Écrit l'ID de conteneur dans le fichier
--cpu-period=0 Limite la période CFS
--cpuset-cpus=CPUSET-CPUS CPU dans lesquels autoriser l'exécution
--cpuset-mems="" Nœuds mémoire autorisés.
--cpu-quota=0 Limite le quota CPU CFS
-d, --detach=true|false Lance de conteneur en tâche de fond et affiche l'ID du conteneur. défaut: false
--detach-keys="" Change la séquence de touche pour détacher le conteneur. Défaut: CTRL-p CTRL-q.
--device=[] Un périphérique hôte pour le conteneur (ex --device=/dev/sdc:/dev/xvdc:run)
--device-read-bps=[] Limite le taux de lecture d'un périphérique ( ex --device-read-bps=/dev/sda:1mb)
--device-read-iops Limite le taux de lecture d'un périphérique (ex --device-read-iops=/dev/sda:1000)
--device-write-bps=[] Limite le taux d'écriture d'un périphérique ( ex --device-write-bps=/dev/sda:1mb)
--device-write-iops Limite le taux d'écriture d'un périphérique (ex --device-write-iops=/dev/sda:1000)
--dns-search=[] Définis les domaines de recherche DNS.
--dns-opt=[] Définis les options DNS
--dns=[] Définis les serveurs DNS
-e, --env=[] Définis des variables d'environnement.
--entrypoint="" Remplace l'ENTRYPOINT de l'image
--env-file=[] Line un fichier de variables d'environnements
--expose=[] Expose un port, une une plage de ports informant Docker que le conteneur écoute sur les ports spécifiés. Docker utilise cette information pour interconnecter les conteneurs en utilisant des liens et pour définir la redirection de port dans le système hôte.
--group-add=[] Ajoute des groupes additionnels à lancer
-h, --hostname="" nom d'hôte du conteneur
-i, --interactive=true|false Garde STDIN ouvert même s'il n'est pas attaché. défaut: false
--ip="" Définis l'adresse IPv4 de l'interface du conteneur, uniquement avec --net pour les réseaux utilisateurs
--ip6="" Définis l'adresse IPv6 de l'interface du conteneur, uniquement avec --net pour les réseaux utilisateurs
--ipc="" Créé un espace de nom IPC privé pour le conteneur
--isolation="default" spécifique le type de technologie d'isolation utilisée par les conteneurs
-l, --label=[] Définis les métadonnées du conteneur (ex: --label com.example.key=value)
--kernel-memory="" Limit la mémoire kernel. (0 = illimité)
--label-file=[] Lit un fichier de labels
--link=[] Ajoute un lien vers un autre conteneur sous la forme ‹nom ou id›:alias.
--log-driver="json-file|syslog|journald|gelf|fluentd|awslogs|splunk|none" Pilote de logging pour le conteneur. La commande docker logs ne fonctionne que pour les pilotes json-file et journald.
--log-opt=[] options spécifique au pilote de logging
-m, --memory="" Limite mémoire
--memory-reservation="" Limite soft
--memory-swap="LIMIT" Une valeur limite égale à la mémoire plus le swap. Doit être utilisé avec -m.
--mac-address="" L'adresse mac de conteneur
--name="" Assigne un nom au conteneur au format UUID long, UUID court, ou un nom.
--net="bridge" Définis le mode réseau pour le conteneur (bridge, none, container:‹name|id›, host, ‹network-name›|‹network-id›
--net-alias=[] ajoute un alias réseau pour le conteneur
--oom-kill-disable=true|false Active ou non le OOM Killer pour le conteneur
--oom-score-adj="" Ajustement OOM de l'hôte pour le conteneur (-1000 à 1000)
-P, --publish-all=true|false Publie tous les ports exposés aux ports aléatoire dans les interfaces de l'hôte. Défaut: false
-p, --publish=[] Publie le port d'un conteneur, ou une plage de port, à l'hôte (Format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort)
--pid=host Définis de mode PID pour le conteneur (host: utilise l'espace de nom PID de l'hôte, non sécurisé)
--uts=host Définis le mode UTS pour le conteneur (host: utilise l'espace de noms UTS dans le conteneur, non sécurisé)
--privileged=true|false Donne des priviléges étendus à ce conteneur. Défaut: false
--read-only=true|false Mounte le système de fichier racine du conteneur en lecture seule.
--restart="no" Stratégie de redémarrage quand le conteneur se termine. (no, on-failure[:max-retry], always, unless-stopped)
-rm=true|false Supprime automatiquement le conteneur quand il se termine. incompatible avec -d. défaut: false
--security-opt=[] Options de sécurité
--stop-signal=SIGTERM Signal pour stopper un conteneur
--shm-size="" Taille de /dev/shm. format: ‹number›‹unit›
-t, --tty=true|false Alloue un pseudo-TTY. défaut: false
--tmpfs=[] Créé un montage tmpfs
-u, --user="" Définis le username ou l'UID utilisé et optionnellement le group ou GID pour la commande spécifiée
--ulimit=[] Options ulimit
-v|--volume[=[[HOST-DIR:]CONTAINER-DIR[:OPTIONS]]] Créé un montage. avec -v /HOST-DIR:/CONTAINER-DIR, Docker monte /HOST-DIR dans l'hôte dans /CONTAINER-DIR dans le conteneur. Si HOST-DIR est omis, Docker créé un nouveau volume dans l'hôte. par défaut, les montages sont privés (non-visibles dans l'hôte). Peut être spécifié plusieurs fois.
--volume-driver="" Pilote de volume du conteneur. Ce pilote créé les volumes spécifié soit avec l'instruction VOLUME du dockerfile, ou depuis l'option -v.
--volumes-from=[] Monte les volumes depuis les conteneurs spécifiés.
-w, --workdir="" Répertoire de travail dans le conteneur
^
13 mars 2016




docker-cp

docker-cp

Copier des fichiers/répertoires entre un conteneur et le système de fichier local

   copie le contenue de SRC_PATH vers DEST_PATH. Permet de copier le système de fichier d'un conteneur dans la machine locale et inversement. Si - est spécifié, permet d'envoyer une archive tar depuis STDIN ou vers STDOUT. Le conteneur peut être en cours d'exécution ou arrêté. docker cp assume que les chemins de conteneurs soient relatif au répertoire racine. Cette commande agit comme la commande cp -a (récursif et préservation des permissions)

   Un ':' est utilisé pour délimiter le conteneur et son chemin, par exemple: `/path/to/file:name.txt` or `./file:name.txt`. Il n'est pas possible de copier certains fichiers système tels que /proc, /sys, /dev, et les montages créé par l'utilisateur dans le conteneur.

OPTIONS

-L, --folow-link=true|false Suit les liens symboliques

Exemples

Supposons un conteneur ayant finis de produire un fichier dans son système de fichier. Il peut être sortis via:
docker cp mycontainer:tmp/foo /tmp
^
13 mars 2016




docker-commit

docker-commit

Créer une nouvelle image depuis les changements d'un conteneur

   Crée une nouvelle image depuis un conteneur existant. La nouvelle image contient le contenu du système de fichier du conteneur, excluant tous volumes de données. Cette commande est utile pour étendre une image existante.

OPTIONS

-a, --author="" Auteur
-c, --change=[] Applique les instruction Dockerfile spécifiés. (CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR)
-m, --message="" Message d'envoie
-p, --pause=true|false Met en pause le conteneur durant le commit. Défaut: true.

Exemples

Créer une nouvelle image depuis un conteneur existant:
docker commit -m="Added Apache to Fedora base image" -a="A D Ministrator" 98bd7fc99854 fedora/fedora_httpd:20
Appliquer les instruction Dockerfile spécifiés:
docker commit -c="ENV DEBUG true" 98bd7fc99854 debug-image
^
13 mars 2016




docker-build

docker-build

Construire une image depuis le code source

   Cette commande lit un Dockerfile depuis le répertoire spécifié. Il a besoin également d'autres fichiers et répertoires trouvés dans le répertoire courant du service docker. Le contenu de ce répertoire sera utilisé par les commandes AD dans le Dockerfile.

   Note, cela envoie beaucoup de données au service Docker en fonction du contenu du répertoire courant. La construction est lancé par le service Docker, par par le client, donc tout le contexte doit être transféré au service. Le client affiche "Sending Build context to Docker daemon" quand le contexte est envoyé au service.

   Quand l'URL d'une archive tar ou un simple Dockerfile est donné, aucun contexte est envoyé au service. Dans ce cas, le Dockerfile à la racine de l'archive et le reste de l'archive seront utilisé comme contenu de construction. Dans un dépôt git est utilisé comme url, le dépôt est cloné localement et envoyé comme contexte.

OPTIONS

-f, --file=PATH/Dockerfile Chemin du fichier Dockerfile à utiliser.
--build-arg=variable Nom et valeur d'un buildarg. Docker les utilise comme contexte d'environnement via l'instruction RUN du dockerfile.
--force-rm=true|false Supprime les conteneurs intermédiaires, même après des constructions échouées. défaut: false
--isolation="default" spécifique le type de technologie d'isolation utilisée par les conteneurs
--no-cache=true|false Ne pas utiliser de cache pour construire l'image. Défaut: false
--pull-true|false Tente de récupérer une version plus récente de l'image. défaut: false
-q, --quiet=true|false Supprime la sortie de la construction et affiche l'ID de l'image en cas de succès. Défaut: false
--rm=true|false Supprime les conteneurs intermédiaire en cas de réussite. Défaut: true.
-t, --tag="" Noms de dépôts (et optionnellement avec tag) à appliquer à l'image résultante en cas de succès.
-m, --memory=MEMORY Limite mémoire
--memory-swap="LIMIT" Une valeur limite égale à la mémoire plus le swap. Doit être utilisé avec -m.
--shm-size="" Taille de /dev/shm. format: ‹number›‹unit›
--cpu-shares=0 Partage CPU
--cpu-period=0 Limite la période CFS
--cpu-quota=0 Lisite le quota CPU CFS
--cpuset-mems="" Nœuds mémoire autorisés.
--cpuset-cpus=CPUSET-CPUS CPU dans lesquels autoriser l'exécution
--cgroup-parent="" Chemin des cgroups sous lesquels créer le conteneur. Si le chemin n'est pas absolu, le chemin est relatif aux cgroups du processus init.
--ulimit=[] Options ulimit
-v|--volume[=[[HOST-DIR:]CONTAINER-DIR[:OPTIONS]]]

Exemples

Construire une image en utilisant un Dockerfile dans le répertoire courant:
docker build .
Construire une image et nommer cette image
docker build -t myimage .
Une meilleur approche est de nommer le répertoire, nom et tag:
docker build -t fedora/jboss:1.0
Construire une image avec une URL:
docker build github.com/scollier/purpletest
Construire une image en utilisant une URL dans un contexte tar
docker build -f dev/Dockerfile https://10.10.10.1/docker/context.tar.gz
^
13 mars 2016




docker-attach

docker-attach

Attache un conteneur en cours d'exécution

   docker attach permet d'attacher une conteneur en cours d'exécution en utilisant l'ID du conteneur ou son nom, soit pour voir sa sortie, soit pour contrôler son interactivité. On peut attacher le même processus plusieurs fois simultanément. Pour stopper un conteneur, utiliser CTRL-c. Cette séquence de touche envoie SIGKILL au conteneur. On peut détacher un conteneur en utilisant une séquence de touches (défaut: CTRL-p CTRL-q). On peut configurer la séquence de touche en utilisant l'option --detach-keys ou un fichier de configuration. Il est interdit de rediriger l'entrée standard d'une commande docker attach en attachant un conteneur tty (lancé avec -t).

OPTIONS

--detach-keys="" Change la séquence de touche pour détacher le conteneur. Défaut: CTRL-p CTRL-q.
--no-stdin=true|false N'attache pas STDIN. défaut: false
--sig-proxy=true|false signaux proxy reçus au processus (mode non-TTY uniquement). SIGCHLD, SIGSTOP, SIGKILL ne sont pas proxifiés.

Exemples

Atacher un conteneur:
ID=$(sudo docker run -d fedora /usr/bin/top -b)
sudo docker attach $ID