Outils pour utilisateurs

Outils du site


informatique:docker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:docker [13/04/2019 10:14] – [docker save] cyrilleinformatique:docker [24/11/2023 20:44] (Version actuelle) – [Copier une image] cyrille
Ligne 88: Ligne 88:
 </code> </code>
  
 +if you are running short-term foreground processes, add ''--rm'' option.
 +
 +Voir [[https://docs.docker.com/engine/reference/run/|reference/run]]
 === docker start === === docker start ===
  
Ligne 159: Ligne 162:
 </code> </code>
  
 +=== docker volume rm ===
 +
 +<code bash>
 +docker volume rm [OPTIONS] VOLUME [VOLUME...]
 +</code>
 ==== Dockerfile ==== ==== Dockerfile ====
  
Ligne 195: Ligne 203:
 </code> </code>
  
 +==== Docker Desktop ====
 +
 +https://docs.docker.com/desktop/
 ==== Rancher ==== ==== Rancher ====
  
Ligne 201: Ligne 212:
 ===== Images Docker ===== ===== Images Docker =====
  
-==== nginx-proxy ====+==== nginx-proxy & acme-companion ====
  
-  * https://hub.docker.com/r/jwilder/nginx-proxy/ +  * https://github.com/nginx-proxy/nginx-proxy <del>https://github.com/jwilder/nginx-proxy</del>  
-  * https://github.com/jwilder/nginx-proxy+  * https://github.com/nginx-proxy/acme-companion
  
-Le container [[https://hub.docker.com/r/jwilder/nginx-proxy/|jwilder/nginx-proxy]] sert de reverse proxy aux containers Dockers fournissant des services web.+C'est le reverse proxy pour d'autres containers fournissant des services web. Accompagné de ''acme-companion'' on obtient le HTTPS LetsEncrypt automatique. 
 + 
 +acme-companion is a lightweight companion container for nginx-proxy. It handles the automated creation, renewal and use of LetsEncrypt SSL certificates for proxied Docker containers through the ACME protocol. 
 + 
 +  * Automated creation/renewal of Let's Encrypt (or other ACME CAs) certificates using acme.sh. 
 +  * Let's Encrypt / ACME domain validation through http-01 challenge only. 
 +  * Automated update and reload of nginx config on certificate creation/renewal. 
 +  * 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/schema.png?460 }} 
 + 
 +Les 2 dans un docker-compose et le tour est joué: 
 +<code yaml> 
 +volumes: 
 +  conf: 
 +  vhost: 
 +  html: 
 +  dhparam: 
 +  certs: 
 +  acme: 
 + 
 +services: 
 +  nginx-proxy
 +    image: nginxproxy/nginx-proxy 
 +    container_name: nginx-proxy 
 +    ports: 
 +      - "80:80" 
 +      - "443:443" 
 +    volumes: 
 +      - conf:/etc/nginx/conf.d 
 +      - vhost:/etc/nginx/vhost.d 
 +      - html:/usr/share/nginx/html 
 +      - dhparam:/etc/nginx/dhparam 
 +      - certs:/etc/nginx/certs:ro 
 +      - /var/run/docker.sock:/tmp/docker.sock:ro 
 +    network_mode: bridge 
 +  acme-companion: 
 +    image: nginxproxy/acme-companion 
 +    container_name: nginx-proxy-acme 
 +    volumes_from: 
 +      - nginx-proxy 
 +    volumes: 
 +      - certs:/etc/nginx/certs:rw 
 +      - acme:/etc/acme.sh 
 +      - /var/run/docker.sock:/var/run/docker.sock:ro 
 +    network_mode: bridge 
 +</code> 
 + 
 +Il suffit ensuite de lancer des containers avec les ENV qui vont bien: 
 +<code bash> 
 +docker run -d -p 8000:8000 --name dokuwiki -v $(pwd)/data:/data \ 
 + --env "VIRTUAL_HOST=backup-01.comptoir.net"
 + --env "VIRTUAL_PORT=8000"
 + --env "LETSENCRYPT_HOST=toto.comptoir.net"
 + --env "LETSENCRYPT_EMAIL=toto@comptoir.net"
 + crazymax/dokuwiki:latest 
 +</code> 
 + 
 +Et voilà le container ''dokuwiki'' est automatiquement prit en charge par ''nginx-proxy'' et sont certificat https généré par ''acme-companion'' :-) 
 + 
 +<WRAP center round important 60%> 
 +Il reste un mauvais point: le container ''dokuwiki'' est accessible (LISTEN) sur le ''host'', il faut donc activer et configurer un firewall.\\ J'ai essayé avec des ''network'' mais ne suis pas arrivé à isoler les container vhosts. 
 +</WRAP> 
 + 
 +On le voit sur le port ''32771''
 +<code> 
 +# netstat -tanp | grep LISTEN 
 +tcp        0      0 0.0.0.0:30001           0.0.0.0:              LISTEN      670/sshd             
 +tcp        0      0 127.0.0.1:25            0.0.0.0:              LISTEN      937/exim4            
 +tcp6            0 :::32771                :::*                    LISTEN      22408/docker-proxy   
 +tcp6            0 :::80                   :::                   LISTEN      21823/docker-proxy   
 +tcp6            0 :::30001                :::*                    LISTEN      670/sshd             
 +tcp6            0 ::1:25                  :::*                    LISTEN      937/exim4            
 +tcp6            0 :::443                  :::*                    LISTEN      21811/docker-proxy   
 +</code>
  
-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 236: Ligne 322:
 Une image fullstack (Etherpad-lite, Nodejs, MariaDb, Abiword & Tidy): Une image fullstack (Etherpad-lite, Nodejs, MariaDb, Abiword & Tidy):
   * [[https://framagit.org/Cyrille37/docker-etherpadlite-fullstack|docker-etherpadlite-fullstack]]   * [[https://framagit.org/Cyrille37/docker-etherpadlite-fullstack|docker-etherpadlite-fullstack]]
 +
 +==== openssh ====
 +
 +Easily launch two hosts waiting for you on SSH port 22, with docker-compose -> https://gitlab.com/Artefacts/docker-openssh-hosts
  
 ===== Tips & tricks ===== ===== Tips & tricks =====
Ligne 245: Ligne 335:
  
 Exemple: Exemple:
-<code>+<code bash>
 docker pull mysql docker pull mysql
 docker stop my-mysql-container docker stop my-mysql-container
Ligne 252: Ligne 342:
        -e MYSQL_ROOT_PASSWORD=mypwd -v /my/data/dir:/var/lib/mysql -d mysql        -e MYSQL_ROOT_PASSWORD=mypwd -v /my/data/dir:/var/lib/mysql -d mysql
 </code> </code>
 +
 +==== Copier une image ====
 +
 +Pour utiliser une image construite sur une machine il faut l'exporter et l'importer sur l'autre machine.
 +<code>
 +# Export
 +docker save cyrille/seriously:v1 | gzip -9 > cyrille-seriously-v1.tgz
 +# Import
 +gunzip cyrille-seriously-v1.tgz | docker load
 + Loaded image: cyrille/seriously:v1
 +# Pour les images sans tag:
 +docker tag 4e1a2b349b09 some/project:v1
 +</code>
 +
 +
 +==== Faire le ménage ====
 +
 +Show docker disk usage :
 +<code bash>
 +$ docker system  df
 +TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
 +Images          42        4         3.469GB   3.038GB (87%)
 +Containers      11        0         177.4MB   177.4MB (100%)
 +Local Volumes                   688.1MB   266.4MB (38%)
 +Build Cache                     0B        0B
 +</code>
 +
 +[[https://docs.docker.com/engine/reference/commandline/system_prune/|docker system prune]]
 +
 +<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
 +...
 +</code>
 +
 +  * Remove all stopped containers : ''docker container prune'' 
 +  * Remove unused images : ''docker image prune''
 +  * Remove all unused networks : ''docker network prune''
 +
  
 ==== Container’s configuration ==== ==== Container’s configuration ====
informatique/docker.1555143262.txt.gz · Dernière modification : 13/04/2019 10:14 de cyrille

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki