Última actualització: maig de 2016
Docker ens permet virtualitzar aplicacions fent servir el concepte de contenidors.
sudo apt-get install docker.io
sudo gpasswd -a el_nostre_usuari docker
sudo service docker restart
Per a que sigui efectiva la pertinença al grup docker hem de deslogar-nos i tornar-nos a logar
Podem buscar imatges a https://registry.hub.docker.com/ o directament des de la línia de comandaments:
sudo docker search debian
Abans de descàrregar una imatge ens hem de logar:
sudo docker login
Un cop logats, podem fer el pull (descarregar cap el nostre ordinador).
sudo docker pull debian:testing
sudo docker run -t -i debian:testing /bin/bash
-t vol dir que obtindrem un terminal virtual i el -i que tindrem interactivitat per a treballar amb el contenidor
Si cridem a una imatge que no tenim descarregada, es farà un pull automàticament des dels repositoris de docker.com cap al nostre ordinador: Unable to find image 'debian:testing' locally... Pulling repository debian
- Si volem executar un contenidor amb un daemon:
sudo docker run -d debian:testing service ssh start
Quan tenim vàries imatges, les podem llistar amb:
sudo docker images
-Contenidors que tenim corrent en aquest moment:
sudo docker ps -l
-Més util: contenidors corrent i també els aturats:
sudo docker ps -a
IMPORTANT: cada cop que executem una imatge, es genera un contenidor nou. Com ja hem dit abans, podem llistar les imatges que tenim disponibles amb:
sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
debian testing 88ba2870bfbe 6 weeks ago 154.7 MB
Ara, executem sobre aquesta imatge:
sudo docker run -t -i debian:testing /bin/bash
Amb el que obtenim un nou contenidor:
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad9e521b2ebe debian:testing "/bin/bash" 4 hours ago Up 2 hours drunk_ritchie
Considerant que haurem fet canvis sobre aquest contenidor, ara tindríem dues opcions:
1. Generar un contenidor nou executant sobre la imarge inicial:
sudo docker run -t -i debian:testing /bin/bash
En aquest cas generarem un segon contenidor; ho podem veure si fem sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67bb48a7b09d debian:testing "/bin/bash" 20 seconds ago Exited (0) 7 seconds ago angry_sinoussi
ad9e521b2ebe debian:testing "/bin/bash" 5 hours ago Up 2 hours drunk_ritchie
2. "Connectar-nos" al contenidor que tenim aturat i que te canvis aplicats:
sudo docker start ad9e
sudo docker attach ad9e
Imaginem que tenim un contenidor que te molts canvis aplicats i que volem "consolidar" com a nova imatge. Farem:
sudo docker commit ad9e v1/debian:testing
Ara, tenim una nova imatge:
sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
v1/debian testing 1aac87b48285 23 minutes ago 322.4 MB
debian testing 88ba2870bfbe 6 weeks ago 154.7 MB
D'aquesta manera, combinant imatges i contenidors tindrem a la nostra disposició diferents snapshots. Molt útil si volem tenir diferents entorns de test, tornar enrere després d'una actualització fallida...
-Aturar un contenidor:
sudo docker stop contenidor
-Veure logs (sortida estàndard) d'un contenidor:
sudo docker logs -f contenidor
-Esborrar un contenidor (primer l'hem d'aturar):
sudo docker rm contenidor
-Si volem esborrar una imatge:
sudo docker rmi imatge
-Exportar una imatge a un fitxer:
sudo docker save imatge > imatge.tar
-Importar una imatge d'un fitxer:
sudo docker load < imatge.tar
-Si volem publicar pel port 2222 de l'equip "host" el port 22 d'un contenidor:
sudo docker run -d -p 2222:22 debian:testing service ssh start
-Si volem publicar pel port 2222 de l'equip host però només per la interfície de loop:
sudo docker run -d -p 127.0.0.1:2222:22 debian:testing service ssh start
-Si volem publicar pel port 2222 de l'equip host però només per la interfície de loop i udp:
sudo docker run -d -p 127.0.0.1:2222:22/udp debian:testing service ssh start
-Muntar una carpeta de la màquina host (/opt/host/samba) en un contenidor:
sudo docker run -d -p 2222:22 -v /opt/host/samba:/opt/cont/samba debian:testing service ssh start
--Muntar una carpeta de la màquina host (/opt/host/samba) en un contenidor com a només de lectura:
sudo docker run -d -p 2222:22 -v /opt/host/samba:/opt/cont/samba:ro debian:testing service ssh start
-Crear un volum a un contenidor (observar que al contenidor li posem d'alias "taronja"):
sudo docker run -d -p 2222:22 --name taronja -v /voltaronja debian:testing service ssh start
-Un contenidor munta un volum d'un altre contenidor:
sudo docker run -d -p 139:139 --name verd --volumes-from taronja debian:testing service samba start
mkdir wheezy-chroot
debootstrap wheezy ./wheezy-chroot http://http.debian.net/debian/
cd wheezy-chroot
tar cpf - . | docker import - elmeudebian
docker run -t -i -rm elmeudebian /bin/ bash