Ceci est une ancienne révision du document !
Table des matières
Définition
Docker permet d'embarquer une application dans un container virtuel qui pourra s'exécuter sur n'importe quel serveur. C'est une technologie qui a pour but de faciliter les déploiements d'application, et la gestion du dimensionnement de l'infrastructure sous-jacente.
La virtualisation traditionnelle permet, via un hyperviseur, de simuler une ou plusieurs machines physiques, et les exécuter sous forme de machines virtuelles (VM) sur un serveur machine. Ces VM intègrent elles-mêmes un OS sur lequel les applications qu'elles contiennent sont exécutées. Ce n'est pas le cas du container. Le container fait en effet directement appel à l'OS de sa machine hôte pour réaliser ses appels système et exécuter ses applications. Historiquement, Docker repose sur le format de containers Linux, alias LXC. Il l'étend par le biais d'une API dans l'optique d'exécuter les applications dans des containers standards, qui sont donc portables d'un serveur Linux à l'autre.
Comme le container n'embarque pas d'OS, à la différence de la machine virtuelle, il est par conséquent beaucoup plus léger que cette dernière. Il n'a pas besoin d'activer un second système pour exécuter ses applications. Cela se traduit par un lancement beaucoup plus rapide, mais aussi par la capacité à migrer plus facilement un container d'une machine physique à l'autre, du fait de son faible poids.
Docker sur debien jessie
Installer docker
ajouter la ligne suivante dans le fichier /etc/apt/sources.list
deb http://http.debian.net/debian jessie-backports main
puis exécuté les instructions suivante
passer en root
sudo -s
mettre à jour, récupérer l'image amd 64 et installer curl
apt-get update apt-get -t jessie-backports install linux-image-amd64 apt-get install curl
Attenton à bien sortir du root pour le curl
exit curl -sSL https://get.docker.com/ | sh
donner les droits à son utilisateurs d'utiliser docker et redémarrer
sudo gpasswd -a ${USER} docker
sudo service docker restart
exit
Ajouter alpine (ou un autre os) à docker
Pour Télécharger une image alpine:
Docker pull alpine
pour changer l'os, changer le nom après pull, exemple:
Docker pull ubuntu
Dockerfile
L’image du conteneur est générée à partir d’un Dockerfile. Les Dockerfiles sont des fichiers qui permettent de construire une image Docker adaptée à nos besoins, étape par étape, c’est une sorte de script qui permet d’installer les application, ses dépendances, et pré-configurer le futur conteneur. L’image générée pourra être instanciée très facilement sans tout réinstaller.
Pour commencer, créez un nouveau fichier Dockerfile à la racine de votre projet.
touch Dockerfile
La première chose à faire dans un Dockerfile est de définir de quelle image vous héritez. Dans notre exemple plus nous utilisions alpine donc la première ligne du Dockerfile devra contenir la ligne suivante:
FROM alpine
FROM permet de définir notre image de base, vous pouvez l'utiliser seulement une fois dans un Dockerfile.
RUN permet d'exécuter une commande à l'intérieur de votre image comme si vous étiez devant un shell unix.
RUN apk update \ && apk upgrade \ && apk add -y apache2 \
Manipulation
Voir les images
docker images
Voir les conteneurs
docker ps -a
Supprimer une image
docker rmi "ID" ou docker rmi "nom de l'image"
Supprimer un conteneur
docker rm "nom" ou docker rm "ID"
Supprimer tout les conteneurs
docker rm $(docker ps -aq)
wget sous alpine
RUN apk update \ && apk add ca-certificates wget \ && update-ca-certificates
changer d'IP
curl -sS https://gist.githubusercontent.com/kamermans/94b1c41086de0204750b/raw/configure_docker0.sh | sudo bash -s - 192.168.254.1/24
Erreur Docker
Docker fail start (code=exited, status=1/FAILURE)
créer le dossier /etc/systemd/system/docker.service.d/
mkdir /etc/systemd/system/docker.service.d/
créer le ficher overlay.conf
vim /etc/systemd/system/docker.service.d/overlay.conf
et le remplir avec les lignes suivante
[Service] ExecStart= ExecStart=/usr/bin/docker daemon -H fd:// -s overlay
actualisé les changements en exécutant:
sudo systemctl daemon-reload
vérifier que la configuration a été chargée:
systemctl show --property=ExecStart docker
redémarrer docker:
sudo systemctl restart docker
Changer d'IP après l'érreur
Rajouter l'IP dans /etc/systemd/system/docker.service.d/overlay.conf
vim /etc/systemd/system/docker.service.d/overlay.conf [Service] ExecStart= ExecStart=/usr/bin/docker daemon -H fd:// -s overlay --bip=192.168.169.1/24
reload daemon
systemctl daemon-reload
stop docker
systemctl stop docker
installer les outils bridge
sudo apt-get install bridge-utils
down et del docker0
sudo ip link set docker0 down sudo brctl delbr docker0
start docker daemon
systemctl start docker
utilise le script ip
curl -sS https://gist.githubusercontent.com/kamermans/94b1c41086de0204750b/raw/configure_docker0.sh | sudo bash -s - 192.168.254.1/24
Lien à trié
http://blog.d2-si.fr/2016/06/29/start-up-docker-swarm/
https://www.guillaume-leduc.fr/docker-comme-solution-de-virtualisation-theorie.html
