docker:tips

Docker et DockerCompose

  • 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

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
  • 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
  • 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 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
  • 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

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é.
  • docker/tips.txt
  • Dernière modification: 2021/03/04 10:05
  • de william