docker:tips

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
docker:tips [2017/07/13 11:43]
william
docker:tips [2021/03/04 10:05] (Version actuelle)
william
Ligne 1: Ligne 1:
-====== Docker : Commandes de bases  ======+====== Docker et DockerCompose ======
  
-===== Introduction =====+===== Installation et configuration de Docker =====
  
-  * Liste des commandes memo pour docker+==== 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
  
-===== Installation docker =====+mount -a  
 +</code>
  
-<code bash> +  * Installation de docker :   <code bash> 
-wget -qO- https://get.docker.com/ | sh+yum install docker
 </code> </code>
  
-===== Installation docker-compose =====  +==== Centos 8 ==== 
-<code bash> + 
-wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` +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 
-chmod +x /usr/local/bin/docker-compose+ 
 + 
 +  * 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> </code>
  
-===== Commandes docker =====  + 
-<code bash> + 
-docker search nomdelimage +==== Configuration et activation du service ==== 
-docker pull docker.io/nomdelimage + 
-docker images +  * Ajout d'une partition 
-docker run +    * Les images et containers pouvant être volumineux, on ajoute un volume logique à la machine de **10go** et on le monte dans **/local/docker** 
-docker ps -a +    * Ajout du volume :   ( Voir [[systemes/linux/lvm|Documentation LVM]] )<code bash> 
-# redémarrer un container +mkdir /var/lib/docker 
-docker run xxxxx+vim /etc/fstab  
 +/dev/vg1/local /local/docker xfs defaults 1 2  
 + 
 +mount -a 
 </code> </code>
  
-===== Commandes docker-compose =====  +  * Configuration de docker  <code bash> 
-En vrac docker-compose : +mkdir /etc/docker/ 
-<code bash> +mkdir /local/docker/ 
-git clone nomdelaressource.git +vim /etc/docker/daemon.json 
-build & run+
 +   "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 
 +</code> 
 + 
 +==== Exemple de fichier docker-compose.yml ==== 
 + 
 +  * Exemple avec un système sharelatex simplifier <file yaml  /local/nomApplication-compose/docker-compose.yml > 
 + 
 +version'2.2' 
 +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 
 +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> </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.1499939003.txt.gz
  • Dernière modification: 2019/02/06 14:02
  • (modification externe)