User Tools

Site Tools


docker:index

This is an old revision of the document!


Docker

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

Given a Dockerfile, you can build your own Docker image and push it on [DockerHub](https://hub.docker.com/).

# build image
$ docker build -t "orel33/mydebian:latest" .
# test it
$ docker run -i -t orel33/mydebian /bin/bash
# login (need to be registered)
$ docker login
# push image
$ docker push orel33/mydebian:latest

To pull this docker image:

$ docker pull orel33/mydebian:latest
 

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

You cannot mount (-v) a directory from first docker into the inner docker… Instead, use docker cp to copy files…

$ 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

Misc

docker/index.1552294562.txt.gz · Last modified: 2024/03/18 15:05 (external edit)