docker:tips

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
docker:tips [2017/07/13 11:41]
william créée
docker:tips [2021/03/04 10:05] (Version actuelle)
william
Ligne 1: Ligne 1:
-Installation docker : +====== Docker et DockerCompose ======
-<code bash> +
-wget -qO- https://get.docker.com/ | sh +
-<code>+
  
-Installation docker-compose :  +===== Installation et configuration de Docker ===== 
-<code bash> + 
-wget -/usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m`+==== Centos 7 ==== 
 + 
 +  * Ajout d'une partition 
 +    * Les images et containers pouvant être volumineux, on ajoute un volume logique à la machine de **10go** et on le monte dans **/local/docker/** 
 +    * Ajout du volume :   ( Voir [[systemes/linux/lvm|Documentation LVM]] ) <code bash> 
 +mkdir /var/lib/docker 
 +vim /etc/fstab  
 +/dev/vg1/local /local/docker xfs defaults 1 2  
 + 
 +mount -a  
 +</code> 
 + 
 +  * Installation de docker   <code bash> 
 +yum install docker 
 +</code> 
 + 
 +==== Centos 8 ==== 
 + 
 +La version de containerd.io n'est pas la bonne pour docker sur Centos8. On va utiliser une version précédente de Docker au lieu de forcer l'installation et d'avoir des erreurs à chaque mise à jour système 
 + 
 + 
 +  * Installation de docker :   <code bash> 
 +# on ajoute le repo officiel 
 +dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo 
 +dnf install docker-ce 
 + 
 +# le probleme de dépendance est corrigé en docker 19 
 +</code> 
 + 
 + 
 + 
 +==== Configuration et activation du service ==== 
 + 
 +  * Ajout d'une partition 
 +    * Les images et containers pouvant être volumineux, on ajoute un volume logique à la machine de **10go** et on le monte dans **/local/docker** 
 +    * Ajout du volume :   ( Voir [[systemes/linux/lvm|Documentation LVM]] )<code bash> 
 +mkdir /var/lib/docker 
 +vim /etc/fstab  
 +/dev/vg1/local /local/docker xfs defaults 1 2  
 + 
 +mount -a  
 +</code> 
 + 
 +  * Configuration de docker  <code bash> 
 +mkdir /etc/docker/ 
 +mkdir /local/docker/ 
 +vim /etc/docker/daemon.json 
 +
 +   "bip": "10.254.0.1/16", 
 +   "default-address-pools": 
 +   [ 
 +     {"base":"10.10.0.0/16","size":24} 
 +   ], 
 +   "data-root": "/local/docker", 
 +   "log-driver": "json-file", 
 +   "log-opts":
 +     "max-size": "500m", 
 +     "max-file": "3" 
 +   } 
 +
 +</code> 
 + 
 + 
 +  * Activation du service : <code bash> 
 +systemctl enable docker --now 
 +</code> 
 + 
 +===== Installation et utilisation de Docker Compose ===== 
 + 
 +  * **DockerCompose** est un gestionnaire de container qui s'abstien de nombreuses couches de configuration de container ( doc https://docs.docker.com/compose/install/
 +  * Installation :   <code bash> 
 +curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 chmod +x /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
-<code>+</code>
  
-En vrac docker :  +==== Exemple de fichier docker-compose.yml ====
-<code bash> +
-docker search nomdelimage +
-docker pull docker.io/nomdelimage +
-docker images +
-docker run +
-docker ps -a +
-# redémarrer un container +
-docker run xxxxx +
-<code>+
  
-En vrac docker-compose : +  * Exemple avec un système sharelatex simplifier <file yaml  /local/nomApplication-compose/docker-compose.yml > 
-<code bash> + 
-git clone nomdelaressource.git +version'2.2' 
-build & run+services: 
 +    sharelatex: 
 +        restart: always 
 +        image: sharelatex/sharelatex:2.4.1 
 +        container_name: sharelatex 
 +        depends_on: 
 +            redis: 
 +                condition: service_started 
 +            mongo: 
 +                condition: service_healthy     
 +        privileged: true 
 +        ports: 
 +            - 5000:80 
 +        links: 
 +            - redis 
 +            - mongo 
 +        volumes: 
 +            - /local/sharelatex:/var/lib/sharelatex 
 +            - /local/sharelatex:/var/log/sharelatex:rw 
 +            - /var/run/docker.sock:/var/run/docker.sock 
 +        environment: 
 +            SHARELATEX_APP_NAME: Overleaf (ex ShareLaTeX) 
 +            SHARELATEX_MONGO_URL: mongodb://10.254.0.1/sharelatex 
 + 
 +    mongo: 
 +        restart: always 
 +        image: mongo 
 +        container_name: mongo 
 +        expose: 
 +            - 27017 
 +        volumes: 
 +            - ~/mongo_data:/data/db 
 +        healthcheck: 
 +            test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet 
 +            interval: 10s 
 +            timeout: 10s 
 +            retries: 5 
 + 
 +    redis: 
 +        restart: always 
 +        image: redis 
 +        container_name: redis 
 +        expose: 
 +            - 6379 
 +        volumes: 
 +            - ~/redis_data:/data 
 + 
 +</file> 
 + 
 +==== Execution de docker-compose.yml ==== 
 + 
 +  * Démarrage/Arrêt/Redémarrage du conteneur<code bash> 
 + 
 +cd /local/nomApplication-compose 
 + 
 +# On crée notre fichier  
 +vim docker-compose.yml 
 + 
 +creer un container et démarre un container en mode logs 
 docker-compose up docker-compose up
- si on a changer une dep !  +creer un container et démarre un container en mode daemon 
-docker-compose up --build +docker-compose up -d  
-entrer dans le container déjà run +# stop   
-docker exec -it dos bash +docker-compose down 
-<code>+redemarre un container ( il ne relis pas le docker compose et donc ne modifie pas les variables dans le container si le programme ne lit pas un fichier sur la machine hote )  
 +docker-compose start 
 +docker-compose stop 
 +docker-compose restart 
 +</code> 
 + 
 +  * Executer des commandes dans le container <code bash> 
 +docker-compose exec nomduservice nomdelacommande 
 +docker-compose exec sharelatex ls /etc/ 
 +docker-compose exec sharelatex /bin/bash 
 +</code> 
 + 
 +===== Problèmes connu ===== 
 + 
 + 
 +==== Utiliser docker-compose dans un cron ==== 
 + 
 +Il faut utiliser **"-T"** à la commande exec pour ne pas avoir l'erreur **"the input device is not a TTY"** <code bash> 
 +.... 
 +/usr/local/bin/docker-compose exec -T cas ls /var/log/tomcat/ 
 + 
 +</code> 
  • docker/tips.1499938879.txt.gz
  • Dernière modification: 2019/02/06 14:02
  • (modification externe)