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
system:virtualisation:docker [16/01/2017 16:14] – ↷ Page déplacée de webcentric:docker à system:virtualisation:docker descampssystemes:virtualisation:docker [29/09/2022 12:41] (Version actuelle) bonnet
Ligne 1: Ligne 1:
 +====== Docker ======
  
 +===== Installation de Docker =====
 +
 +<note important>L'installateur de Docker supprimera les installations de GIT existantes. Une version de GIT spécifique sera installé.</note>
 +
 +Le fichier d'installation se trouve à l'adresse : [[https://www.docker.com/docker-toolbox]].
 +
 +
 +===== Utilisation du dépôt WBC =====
 +
 +Adresse du dépôt : ''docker.wcentric.com''
 +
 +==== Authentification ====
 +
 +Le dépôt n'a aucun système d'authentification actuellement. Par contre il n'est accessible qu'à partir du réseau interne de WEBCENTRIC.
 +
 +==== Certificat ====
 +
 +Le certificat est auto-signé. Pour utiliser le dépôt, il faut ajouter le certificat. Il se trouve à l'adresse suivante : ''http://docker.wcentric.com/ca.crt''.
 +
 +Le script suivant peut être utilisé pour ajouter le certificat sur les clients Windows :
 +
 +<code bash update-ca.sh>
 +#!/bin/bash
 +
 +VM=default
 +DOCKER_MACHINE=`which docker-machine`
 +
 +####
 +## Step 1 : Start Docker
 +####
 +
 +if [ ! -z "$VBOX_MSI_INSTALL_PATH" ]; then
 +  VBOXMANAGE=${VBOX_MSI_INSTALL_PATH}VBoxManage.exe
 +else
 +  VBOXMANAGE=${VBOX_INSTALL_PATH}VBoxManage.exe
 +fi
 +
 +BLUE='\033[1;34m'
 +GREEN='\033[0;32m'
 +NC='\033[0m'
 +
 +if [ ! -f "$DOCKER_MACHINE" ] || [ ! -f "${VBOXMANAGE}" ]; then
 +  echo "Either VirtualBox or Docker Machine are not installed. Please re-run the Toolbox Installer and try again."
 +  exit 1
 +fi
 +
 +"${VBOXMANAGE}" showvminfo $VM &> /dev/null
 +VM_EXISTS_CODE=$?
 +
 +set -e
 +
 +if [ $VM_EXISTS_CODE -eq 1 ]; then
 +  echo "Creating Machine $VM..."
 +  "$DOCKER_MACHINE" rm -f $VM &> /dev/null || :
 +  rm -rf ~/.docker/machine/machines/$VM
 +  "$DOCKER_MACHINE" create -d virtualbox --virtualbox-memory 2048 $VM
 +else
 +  echo "Machine $VM already exists in VirtualBox."
 +fi
 +
 +echo "Starting machine $VM..."
 +"$DOCKER_MACHINE" start $VM
 +
 +echo "Setting environment variables for machine $VM..."
 +eval "$($DOCKER_MACHINE env --shell=bash $VM)"
 +
 +echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}$VM${NC} machine with IP ${GREEN}$($DOCKER_MACHINE ip $VM)${NC}"
 +
 +
 +####
 +## Step 2 : Add certificat
 +####
 +
 +"$DOCKER_MACHINE" ssh $VM << EOF
 +sudo mkdir -p /etc/docker/certs.d/docker.wcentric.com/
 +sudo wget -O /etc/docker/certs.d/docker.wcentric.com/ca.crt http://docker.wcentric.com/ca.crt
 +EOF
 +
 +
 +####
 +## Step 3 : Regenerate certificats
 +####
 +
 +"$DOCKER_MACHINE" regenerate-certs --force $VM
 +
 +echo "Everything is OK"
 +echo "Press any key to quit...."
 +read -n1
 +</code>
 +
 +===== Résolution des problèmes =====
 +
 +==== Liste des process ====
 +Cette commande permet de lister tous les PID des containers.
 +
 +    docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.ID}}, {{.Name}}'
 +
 +Vous pouvez ensuite déterminer les process du container avec la commande suivante :
 +
 +    ps -f $(pgrep -P PID)
 +
 +Remplacez PID par le PID du container.
 +
 +==== Problème de montage ====
 +
 +Sur Windows, il peut y avoir des problèmes de montage sur la VM :
 +
 +<code>
 +docker run --rm -it -v /c/Users/utilisateur:/home/utilisateur ubuntu bash
 +invalid value "C:\\Users\\bonnet;C:\\Program Files\\Git\\home" for flag -v: bad mount mode specified : \Program Files\Git\home
 +See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
 +</code>
 +
 +Ce problème est dû à une gestion un peu particulière des chemins d'accès par MinGW. La solution est d'utiliser deux slash au début du chemin Windows :
 +
 +<code>
 +docker run --rm -it -v //c/Users/utilisateur:/home/utilisateur ubuntu bash
 +</code>
 +
 +
 +==== error initializing network controller ====
 +Erreur présente après mauvais arrêt de Docker. Dans ce cas il faut supprimer les fichiers du contrôleur réseau.
 +
 +<code bash>
 +rm -r /var/lib/docker/network
 +</code>