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édentes Révision précédente
Prochaine révision
Révision précédente
informatique:docker [05/07/2016 12:07]
cyrille [docker save]
informatique:docker [18/09/2021 10:49] (Version actuelle)
cyrille [nginx-proxy & acme-companion]
Ligne 38: Ligne 38:
   * [[https://docs.docker.com/engine/userguide/|Docker Engine user guide]]   * [[https://docs.docker.com/engine/userguide/|Docker Engine user guide]]
     * [[https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/|Best practices for writing Dockerfiles]]     * [[https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/|Best practices for writing Dockerfiles]]
 +
 +[[https://blog.imirhil.fr/2016/10/09/docker-container-hell.html|Docker et la tendance de la conteneurisation : a-t-elle vraiment été en production ?]] 2016-10-09
  
 Cheat sheets: Cheat sheets:
Ligne 51: Ligne 53:
   * [[https://dockerbook.com/|The Docker Book]] by James Turnbull - 10$ epub/pdf   * [[https://dockerbook.com/|The Docker Book]] by James Turnbull - 10$ epub/pdf
 ==== Installation ==== ==== Installation ====
 +
 +  * Ubuntu: https://docs.docker.com/engine/installation/linux/ubuntulinux/
 +  * Debian: https://docs.docker.com/engine/installation/linux/debian/
  
 <code bash> <code bash>
Ligne 83: 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 132: Ligne 140:
   -q, --quiet          Only show numeric IDs   -q, --quiet          Only show numeric IDs
 </code> </code>
 +
 +=== docker commit ===
 +
 +[[https://docs.docker.com/engine/reference/commandline/commit/|commit reference]]
  
 === docker save === === docker save ===
Ligne 143: Ligne 155:
 </code> </code>
  
 +=== docker cp ===
 +
 +Pour copier un fichier du container vers le host;
 +<code bash>
 +docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
 +</code>
 +
 +=== docker volume rm ===
 +
 +<code bash>
 +docker volume rm [OPTIONS] VOLUME [VOLUME...]
 +</code>
 ==== Dockerfile ==== ==== Dockerfile ====
  
Ligne 161: Ligne 185:
 https://github.com/docker/swarm/ https://github.com/docker/swarm/
  
-==== Compose ====+==== Compose (docker-composer) ====
  
 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 178: Ligne 202:
 $ machine create -d [infrastructure provider] [provider options] [machine name] $ machine create -d [infrastructure provider] [provider options] [machine name]
 </code> </code>
 +
 +==== Rancher ====
 +
 +[[http://rancher.com/rancher/|Rancher]] natively supports and manages all of your Kubernetes, Mesos, and Swarm clusters.
  
 ===== 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 310: Ligne 413:
  
 In the second instruction, replace the ''<host's-docker0-ip-here>'' command with your Docker host's IP address (at the docker0 interface) In the second instruction, replace the ''<host's-docker0-ip-here>'' command with your Docker host's IP address (at the docker0 interface)
 +
 +==== Docker Compose ====
 +
 +  * Here is a docker compose for Laravel (example) : https://github.com/edbizarro/ambientum
  
informatique/docker.1467713274.txt.gz · Dernière modification: 05/07/2016 12:07 de cyrille