Docker et DockerCompose
Installation et configuration de 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 Documentation LVM )
mkdir /var/lib/docker vim /etc/fstab /dev/vg1/local /local/docker xfs defaults 1 2 mount -a
- Installation de docker :
yum install docker
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 :
# 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
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 Documentation LVM )
mkdir /var/lib/docker vim /etc/fstab /dev/vg1/local /local/docker xfs defaults 1 2 mount -a
- Configuration de docker
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" } }
- Activation du service :
systemctl enable docker --now
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 :
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
Exemple de fichier docker-compose.yml
- Exemple avec un système sharelatex simplifier
- /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
Execution de docker-compose.yml
- Démarrage/Arrêt/Redémarrage du conteneur
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 # creer un container et démarre un container en mode daemon docker-compose up -d # stop 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
- Executer des commandes dans le container
docker-compose exec nomduservice nomdelacommande docker-compose exec sharelatex ls /etc/ docker-compose exec sharelatex /bin/bash
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”
.... /usr/local/bin/docker-compose exec -T cas ls /var/log/tomcat/
Vous pourriez laisser un commentaire si vous étiez connecté.