docker

19/10/2019

installer sur ubuntu

apt-get update
apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt-get update
apt-get install docker-ce

tester que docker est installé et marche en lancant une image de demo. ça affiche un petit message :

docker run hello-world

commandes utiles

Voir les images installées

docker images

Chercher des images

docker search ubuntu

Chopper une image

docker pull ubuntu

ou

docker load image.tgz

lancer / créer un container / vm : (attention ca en crée un nouveau à chaque fois)

docker run -ti ubuntu /bin/bash

ajouter -d pour que ça tourne en fond (comme si on avait fait un start)
ajouter -w pour dire dans quel dossier on doit se placer dans la vm
ajouter -v pour mapper un dossier pathReel:pathDansLeContainer
ajouter -p pour mapper un port portReel:portDansLeContainer
ajouter --link pour connecter 2 containers, NomDuContainer:nomSouhaiteDansLeContainer (crée un "nom de domaine" pour un container, ce qui le rend accessible)
ajouter --rm pour auto supprimer le container lorsque l'on l'eteint
ajouter --name pour nommer un container

Voir les containers

docker ps -as

lancer un container qui existe

docker start 8464c7bb5c96

execute une commande sur un container

docker exec 8464c7bb5c96 ls
docker exec -ti 8464c7bb5c96 /bin/bash

autres actions sur le container :

docker stop 8464c7bb5c96
docker restart 8464c7bb5c96

supprime des container :

docker rm 8464c7bb5c96
docker container prune

supprime des images

docker rmi ubuntu

cas complet :

emacs server.js
console.log('test');

lancer

docker run -t --rm -v $(pwd):/usr/src/app -w /usr/src/app xataz/node:6 node server.js

cas complet 2 :

emacs server.js
var http = require('http');
var server = http.createServer(function (request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.end("Hello Monde avec la version " + process.version + "\n");
});
server.listen(8000);
console.log("Server running at 0.0.0.0:8000");

lancer

docker run -d -v $(pwd):/usr/src/app -w /usr/src/app -p 8001:8000 xataz/node:6 node server.js
docker logs 7aef9ddd44698
curl http://localhost:8001

cas complet 3 :

premiere vm : nodejs

docker run -d -v $(pwd):/usr/src/app -w /usr/src/app -p 8001:8000 --name nodev1 xataz/node:6 node app.js

deuxieme vm : nginx

docker run -d -v /docker/config/nginx:/sites-enabled -p 80:8080 --name reverse --link nodev1:nodev1.local xataz/nginx:mainline

le conteneur nginx aura accès au premier conteneur grace a --link. La premiere vm est accessible via le nom de domaine nodev1.local (uniquement depuis la 2e vm)