User Tools

Site Tools


docker:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
docker:index [2018/01/11 10:32] oreldocker:index [2024/03/18 15:06] (current) – external edit 127.0.0.1
Line 12: Line 12:
   $ sudo apt-get install dockerdocker-doc docker.io    $ sudo apt-get install dockerdocker-doc docker.io 
   $ sudo service docker start     $ sudo service docker start  
 +
 +Il faut mieux suivre la procédure d'installation de **Docker CE** sur le site de Docker : https://docs.docker.com/install/linux/docker-ce/debian/ La version packagé dans Debian a des limitations notamment sur le montage des volumes en RW !
  
 Un petit test rapide :  Un petit test rapide : 
Line 56: Line 58:
 Pour supprimer tous les conteneurs : Pour supprimer tous les conteneurs :
  
-  $ docker container rm $(docker container ps -a -q)+  $ docker container rm $(docker container ls -a -q)
  
  
-=== Les images sur Docker Hub ===+=== 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 {{https://hub.docker.com/explore/ | Docker HUB}}. Les images docker publiques sont sur {{https://hub.docker.com/explore/ | Docker HUB}}.
Line 67: Line 77:
   $ docker image ls  # or docker images   $ docker image ls  # or docker images
   $ docker image rm <image ID>   $ docker image rm <image ID>
 +
 +
 +=== Tips ===
 +
 +Stop all containers and remove them...
 +
 +<code bash>
 +$ docker stop $(docker ps -a -q)
 +$ docker rm $(docker ps -a -q)
 +</code>
 +
 +To delete "none" images (or dangling / untagged) :
 +
 +<code bash>
 +$ docker rmi $(docker images --filter "dangling=true" --no-trunc -q)
 +</code>
 +
 +To remove all images (assuming all containers are removed):
 +
 +<code bash>
 +$ docker rmi $(docker images -a -q) --force
 +</code>
 +
 +
 +And the easiest way :
 +
 +<code bash>
 +$ docker image prune
 +</code>
  
 === Dockerfile === === Dockerfile ===
Line 81: Line 120:
      
      
 +Given a Dockerfile, you can build your own Docker image and push it on
 + [DockerHub](https://hub.docker.com/).
 +
 +<code bash>
 +# 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
 +</code>
 +
 +To pull this docker image:
 +
 +<code bash>
 +$ docker pull orel33/mydebian:latest
 +</code>
 +
 +
 +=== Docker Volume ===
 +
 +In order to share data between two dockers, use data volume... as explained here : https://www.digitalocean.com/community/tutorials/how-to-share-data-between-docker-containers
 +
 +
 +<code bash>
 +# 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
 +
 +</code>
 +
 +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... However, you can forward all mounted files from host system, as for instance the docker socket and binary (/var/run/docker.sock & /usr/bin/docker).
 +
 +<code bash>
 +$ 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
 +
 +</code>
 +  
 +=== Docker networking ===
 +
 +<code bash>
 +docker network create mynet
 +docker run --name host1 --network mynet -it orel33/mydebian  # 172.19.0.1/16
 +docker run --name host2 --network mynet -it orel33/mydebian  # 172.19.0.2/16
 +docker run --name host3 --network mynet -it orel33/mydebian  # 172.19.0.3/16
 +docker run --name host4 --network mynet -it orel33/mydebian  # 172.19.0.4/16
 +</code>
 +
 +TODO: Regarder toutes les options...
 +
 +
 +=== Compose ===
 +
 +Todo... 
 +
 +
 +=== Docker Windows ====
 +
 +Sous Windows 10 (64 bit), suivre la procédure d'installation de **Docker Desktop** : https://hub.docker.com/editions/community/docker-ce-desktop-windows
 +
 +Il existe de type de containers qui peuvent s'exécuter sous Windows : les containers Linux (nécessite Hyper-V) et les containers Windows (natifs)
 +
 +
 === Misc === === Misc ===
    
   * http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/   * http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/
   * https://www.packtpub.com/mapt/book/virtualization_and_cloud/9781783984862/2/ch02lvl1sec28/accessing-the-host-device-inside-the-container   * https://www.packtpub.com/mapt/book/virtualization_and_cloud/9781783984862/2/ch02lvl1sec28/accessing-the-host-device-inside-the-container
 +  * https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/
  
docker/index.1515666742.txt.gz · Last modified: 2024/03/18 15:05 (external edit)