A combination of nice docker cmd to remember
Docker Cheatsheet - cmd
docker commit = création d’une image à partir du container Exemple:
docker commit -m "comment about my image" <CONTAINER ID> art:v1.0
Note
|
art:v1.0 = repository:tag
|
docker history <ID_IMAGE> = permet de voir les actions réalisées (et leur impact en stockage mémoire) avant de commit le container en image
docker rmi = raccourcis de suppression d’une image, au lieu de docker rm image
docker diff <CONTAINER> = visualiser les modifications que le conteneur a apporté au delà des couches de lecture de l’image.
nmap -PM <ip> = balayage des ports d’une machine (container, serveur etc ..)
Docker Cheatsheet - arguments
--env MYARG=""
--env-file <my-arg-file>
--hostname <MyContainerHostname>
Docker Cheatsheet - dockerfile
Exemple de dockerfile
FROM ubuntu:latest MAINTAINER arthur RUN apt-get update \ && apt-get install -y nano git \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Build de l’image avec la commande
docker build -t monimage:version
Docker Cheatsheet - layers
Deux types de couches générées à partir du docker file: - Lecture seule (l’image) - Lecture/ecriture (le container)
Note
|
Les images peuvent se partager des couches (pour alléger la stack) |
La cmd docker history
permet de visualiser les couches.
Lier des volumes entre containers
Exemple avec 3 containers : - ubuntu:latest avec nginx - 2 workers bash+php
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y nginx VOLUME /var/www/html/ ENTRYPOINT ["nginx", "-g", "daemon off;"]
FROM php:7.2-cli COPY rollon.sh / COPY affichage.php / RUN chmod 755 /rollon.sh ENTRYPOINT ["./rollon.sh"]
Note
|
Cf sources du tuto de xavki @gitlab.com |
Dans le dossier avec dockerfile serveurweb
docker build -t serveurweb:latest .
Dans le dossier avec dockerfile worker1
docker build -t worker1:latest .
Lancement des containers
docker run -dit --name site serveurweb:latest docker run -dit --name worker1 --volumes-from site worker1:latest
Cache docker
Construire le plus vite possible les images, démarrer plus vite les containers etc..
OPTION: --no-cache
Note
|
Dans un dockerfile, mettre les commandes utilisant le cache en premier. Une fois que le cache n’est plus utilisé dans le script, il ne sera plus utilisé ensuite. Mettre les parties les plus stables en début de script et les plus variables en fin de script. |
Exemple d’un cas de --no-cache :
Si mon script calcule une date par exemple, il faudra mettre un --no-cache car sinon même en cas de nouveau build de l’image docker va utiliser le cache et ne recalculera pas la date.
Si je fais un RUN apt-get update
aujourd’hui dans mon build sans mettre le --no-cache
, mon apt-get update sera
figé dans le temps.
Network docker
Réseau par défaut : docker0 : 172.17.0.0/16
Communication entre conteneur
Warning
|
par défaut, ip non fixes. Best practice: utiliser le nom de conteneur. |
'You can use the container name or the container’s (short, 12 character) id to connect from container to container with docker’s embedded dns as long as you have both containers on the same network and that network is not the default bridge.'
docker create --name my-nginx \
--network my-net \
--publish 8080:80 \
nginx:latest