Ceci est une ancienne révision du document !
Docker
Commandes principales
Conteneur
Création depuis une image
docker run --name cont_name image command
-i | –interactive : Keep STDIN open even if not attached
-t | –tty : Allocate a pseudo tty
–rm : Automatically remove the container when it exits
Attachement d'un volume
docker run --name cont_name --mount source=volume_name,target=/container/path node:8.10.0-stretch
Volume
Création depuis un répertoire de l'hôte
docker volume create --name vol_name -o type=none -o device=/path/to/host/file_or_dir -o o=bind
-o: driver specific options
o: options (comma-separated)
Extraire le contenu d'un volume
docker volume ls DRIVER VOLUME NAME local osx-big-sur_data mkdir data docker run --rm -v osx-big-sur_data:/volume -v `pwd`/data:/target busybox sh -c 'cp -a /volume/* /target/'
Commandes secondaires
Divers
Afficher la date et l'heure de création d'une image ou d'un conteneur
docker inspect -f '{{ .Created }}' IMAGE_OR_CONTAINER
Exemples
DockerFile
FROM webdevops/php-apache-dev:debian-8 ENV WEB_PHP_SOCKET 127.0.0.1:9002 ENV fpm.pool.listen 127.0.0.1:9002 EXPOSE 11080 RUN apt-get update RUN apt-get install -y mysql-client
Construction de l'image
cd path/to/Dockerfile/parent/directory docker build -t dev_node .
Script de création de container
#!/bin/bash docker run -it --name app_demo \ --mount source=workspace,target=/data/workspace \ --mount source=vue_templates,target=/root/.vue-templates \ dev_node \ bash -c " \ cd /data/workspace/app-demo && \ ls -l \ "
Lancement du container
docker start -i app_demo
Dockfile - divers
Création d'un utilisateur/group avec ids spécifiques :
RUN addgroup docker-test --gid 1000 && \ adduser docker-test --debug --no-create-home --disabled-password --gecos "" --uid 1000 --gid 1000
Healthcheck
httpd
healthcheck: test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1 interval: 60s timeout: 30s retries: 3
Registry
Lister les tags d'un dépôt
docker run -t --rm benjaminferon/docker-tags <DEPOT>
Commandes améliorées
ps
docker ps -a --format="table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Command}}\t{{.Status}}\t{{.Ports}}" | awk 'NR<2{print $0;next}{print $0 | "sort --key=2"}'
Astuces pour la construction d'images
Prendre en charge Ctrl+C dans un script bash
# Add support for CTRL+C
exit_func() {
exit 1
}
trap exit_func SIGTERM SIGINT
Divers
Maintenir un container en vie
docker-compose.yml
entrypoint: 'tail -f /dev/null'
Problèmes connus
MySQL/MariaDB :
Error: io_setup() failed with EAGAIN after 5 attempts
$ sysctl fs.aio-max-nr fs.aio-max-nr = 65536 sudo sysctl -w fs.aio-max-nr=2097152