informatique:docker
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
informatique:docker [08/05/2016 18:28] – [Memory] cyrille | informatique:docker [05/10/2023 11:51] – [Faire le ménage] cyrille | ||
---|---|---|---|
Ligne 38: | Ligne 38: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | [[https:// | ||
Cheat sheets: | Cheat sheets: | ||
Ligne 51: | Ligne 53: | ||
* [[https:// | * [[https:// | ||
==== Installation ==== | ==== Installation ==== | ||
+ | |||
+ | * Ubuntu: https:// | ||
+ | * Debian: https:// | ||
<code bash> | <code bash> | ||
Ligne 83: | Ligne 88: | ||
</ | </ | ||
+ | if you are running short-term foreground processes, add '' | ||
+ | |||
+ | Voir [[https:// | ||
+ | === docker start === | ||
+ | |||
+ | Relancer un container arrếté (exited) | ||
+ | <code bash> | ||
+ | docker start -i <ID> | ||
+ | </ | ||
=== docker ps === | === docker ps === | ||
Ligne 125: | Ligne 139: | ||
--no-trunc | --no-trunc | ||
-q, --quiet | -q, --quiet | ||
+ | </ | ||
+ | |||
+ | === docker commit === | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | === docker save === | ||
+ | |||
+ | <code bash> | ||
+ | | ||
+ | </ | ||
+ | ou | ||
+ | <code bash> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | === docker cp === | ||
+ | |||
+ | Pour copier un fichier du container vers le host; | ||
+ | <code bash> | ||
+ | docker cp [OPTIONS] CONTAINER: | ||
+ | </ | ||
+ | |||
+ | === docker volume rm === | ||
+ | |||
+ | <code bash> | ||
+ | docker volume rm [OPTIONS] VOLUME [VOLUME...] | ||
</ | </ | ||
==== Dockerfile ==== | ==== Dockerfile ==== | ||
Ligne 144: | Ligne 185: | ||
https:// | https:// | ||
- | ==== Compose ==== | + | ==== Compose |
Docker Compose permet de créer et configurer un ensemble de conteneurs avec un fichier YAML. | Docker Compose permet de créer et configurer un ensemble de conteneurs avec un fichier YAML. | ||
Ligne 161: | Ligne 202: | ||
$ machine create -d [infrastructure provider] [provider options] [machine name] | $ machine create -d [infrastructure provider] [provider options] [machine name] | ||
</ | </ | ||
+ | |||
+ | ==== Docker Desktop ==== | ||
+ | |||
+ | https:// | ||
+ | ==== Rancher ==== | ||
+ | |||
+ | [[http:// | ||
===== Images Docker ===== | ===== Images Docker ===== | ||
- | ==== nginx-proxy ==== | + | ==== nginx-proxy |
- | * https://hub.docker.com/r/ | + | * https://github.com/nginx-proxy/ |
- | * https:// | + | * https:// |
- | Le container | + | C'est le reverse proxy pour d' |
+ | |||
+ | acme-companion is a lightweight companion | ||
+ | |||
+ | * Automated creation/ | ||
+ | * Let's Encrypt / ACME domain validation through http-01 challenge only. | ||
+ | * Automated update and reload of nginx config on certificate creation/ | ||
+ | * Support creation of Multi-Domain (SAN) Certificates. | ||
+ | * Creation of a Strong Diffie-Hellman Group at startup. | ||
+ | * Work with all versions of docker. | ||
+ | |||
+ | {{ https://raw.githubusercontent.com/nginx-proxy/acme-companion/main/ | ||
+ | |||
+ | Les 2 dans un docker-compose et le tour est joué: | ||
+ | <code yaml> | ||
+ | volumes: | ||
+ | conf: | ||
+ | vhost: | ||
+ | html: | ||
+ | dhparam: | ||
+ | certs: | ||
+ | acme: | ||
+ | |||
+ | services: | ||
+ | | ||
+ | image: nginxproxy/nginx-proxy | ||
+ | container_name: | ||
+ | ports: | ||
+ | - " | ||
+ | - " | ||
+ | volumes: | ||
+ | - conf:/etc/nginx/ | ||
+ | - vhost:/ | ||
+ | - html:/ | ||
+ | - dhparam:/ | ||
+ | - certs:/ | ||
+ | - / | ||
+ | network_mode: | ||
+ | acme-companion: | ||
+ | image: nginxproxy/ | ||
+ | container_name: | ||
+ | volumes_from: | ||
+ | - nginx-proxy | ||
+ | volumes: | ||
+ | - certs:/ | ||
+ | - acme:/ | ||
+ | - / | ||
+ | network_mode: | ||
+ | </ | ||
+ | |||
+ | Il suffit ensuite de lancer des containers | ||
+ | <code bash> | ||
+ | docker run -d -p 8000:8000 --name dokuwiki -v $(pwd)/ | ||
+ | --env " | ||
+ | --env " | ||
+ | --env " | ||
+ | --env " | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Et voilà le container '' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Il reste un mauvais point: le container '' | ||
+ | </ | ||
+ | |||
+ | On le voit sur le port '' | ||
+ | < | ||
+ | # netstat -tanp | grep LISTEN | ||
+ | tcp 0 0 0.0.0.0: | ||
+ | tcp 0 0 127.0.0.1: | ||
+ | tcp6 | ||
+ | tcp6 | ||
+ | tcp6 | ||
+ | tcp6 | ||
+ | tcp6 | ||
+ | </ | ||
- | Le conteneur nginx-proxy peut-être démarré après les virtualhosts conteneurs. C'est cool pour le boot du système ;-) | ||
==== webdevops ==== | ==== webdevops ==== | ||
Ligne 206: | Ligne 329: | ||
En cas de mise à jour de l' | En cas de mise à jour de l' | ||
> Il est possible mais pas conseiller de faire la mise à jour d'une application dans un conteneur, on préférera mettre à jour l' | > Il est possible mais pas conseiller de faire la mise à jour d'une application dans un conteneur, on préférera mettre à jour l' | ||
+ | |||
+ | Exemple: | ||
+ | <code bash> | ||
+ | docker pull mysql | ||
+ | docker stop my-mysql-container | ||
+ | docker rm my-mysql-container | ||
+ | docker run --name=my-mysql-container --restart=always \ | ||
+ | -e MYSQL_ROOT_PASSWORD=mypwd -v / | ||
+ | </ | ||
+ | |||
+ | ==== Faire le ménage ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | <code bash> | ||
+ | $ sudo docker system prune | ||
+ | WARNING! This will remove: | ||
+ | - all stopped containers | ||
+ | - all networks not used by at least one container | ||
+ | - all dangling images | ||
+ | - all dangling build cache | ||
+ | |||
+ | Are you sure you want to continue? [y/N] y | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | * Remove all stopped containers : '' | ||
+ | * Remove unused images : '' | ||
==== Container’s configuration ==== | ==== Container’s configuration ==== | ||
Ligne 229: | Ligne 380: | ||
WARNING: Your kernel does not support memory limit capabilities. Limitation discarded. | WARNING: Your kernel does not support memory limit capabilities. Limitation discarded. | ||
- | > Pass cgroup_enable=memory | + | Il faut activer cgroup.memory |
- | cat > / | + | |
- | GRUB_CMDLINE_LINUX=" | + | Dans /etc/default/grub modifier: |
- | EOF | + | GRUB_CMDLINE_LINUX=" |
- | | + | Puis |
run update-grub2 | run update-grub2 | ||
reboot | reboot | ||
- | After reboot cgroups should be mounted under /sys/ | + | Et vérifier : |
+ | $ cat /proc/cgroups | ||
==== Multi Process Docker Images ==== | ==== Multi Process Docker Images ==== | ||
Ligne 283: | Ligne 435: | ||
In the second instruction, | In the second instruction, | ||
+ | |||
+ | ==== Docker Compose ==== | ||
+ | |||
+ | * Here is a docker compose for Laravel (example) : https:// | ||
informatique/docker.txt · Dernière modification : 24/11/2023 20:44 de cyrille