This is an old revision of the document!
Docker
Un peu de biblio pour commençer :
Installation sur une Debian 8
$ sudo apt-get install dockerdocker-doc docker.io $ sudo service docker start
Un petit test rapide :
$ sudo docker run hello-world
Pour éviter de taper “sudo” :
$ sudo usermod -aG docker $USER
Un peu d'aide :
$ man docker run
Commandes de base
Démarrer un docker interactif (-i -t) en se basant sur une image officielle debian :
$ docker search debian $ docker run -i -t debian bash root@<xxxxxxxx>:/home/docker#
Une fois la session fermée, on peut sauvegarder les modifications effectuées dans l'image
$ docker commit <xxxxxxxx> mydebian # avec <xxxxxxxx> le container ID
On peut ensuite relancer son image mydebian
$ docker run -i -t mydebian /bin/bash
Pour lister tous les conteneurs (actifs ou non) :
$ docker container ls -a
Stopper un conteneur actif :
$ docker container stop <container ID>
Pour rédémmarer un conteneur stoppé et récupérer la session interactive (attach) :
$ docker container start <container ID> $ docker container attach <container ID>
Pour supprimer tous les conteneurs :
$ docker container rm $(docker container ls -a -q)
Les images
Exporter un container en tgz :
$ docker export <container ID> > mydebian.tgz
Importer une image tgz :
docker import - mydebian < mydebian.tgz
Les images docker publiques sont sur Docker HUB.
$ docker search debian $ docker pull debian $ docker image ls # or docker images $ docker image rm <image ID>
Dockerfile
- Dockerfile
FROM debian:latest MAINTAINER Aurelien Esnard <aurelien.esnard@labri.fr> RUN apt-get update && apt-get install -y qemu WORKDIR /home/docker
$ docker build --tag="qemu:debian" . $ docker run -i -t qemu:debian /bin/bash
Docket Volume
# create data volume container $ docker run -it -v myvol:/data --name container1 orel33/mydebian bash root@4c3396f80dd3:/home/docker# touch /data/hello root@4c3396f80dd3:/home/docker# exit # see my container $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3345f3f32bdd orel33/mydebian "bash" 21 seconds ago Exited (0) 5 seconds ago container1 # see my volume $ docker volume ls DRIVER VOLUME NAME local myvol # retrieve your data within container1 docker restart container1 docker exec container1 ls /data # or docker attach container1 # where are stored my data? $ docker inspect container1 | grep /var/lib/docker/volumes "Source": "/var/lib/docker/volumes/myvol/_data", $ sudo ls /var/lib/docker/volumes/myvol/_data hello # mount the data volume from container1 in container2 docker run -it --volumes-from container1 --name container2 orel33/mydebian bash # remove containers & volumes $ docker rm container1 container2 # or docker container prune $ docker volume rm myvol # or docker volume prune
More: https://rominirani.com/docker-tutorial-series-part-7-data-volumes-93073a1b5b72 And more: https://docs.docker.com/storage/volumes/
Docker Inside Docker
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -i -t orel33/mydebian bash ### inside docker ### $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE orel33/mydebian latest 173224cad4d8 27 hours ago 1.79GB # create a deached container # $ docker run -d --name mycontainer orel33/mydebian $ docker run -it --name container1 orel33/mydebian bash $ docker restart container1 && docker attach container1 # copy files inside $ touch hello $ docker cp hello container1:. $ docker exec container1 ls hello ### docker inside docker ### $ docker attach container1 $ ls hello