docker:index
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| docker:index [2018/01/09 10:25] – orel | docker: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' | ||
| Un petit test rapide : | Un petit test rapide : | ||
| Line 27: | Line 29: | ||
| === Commandes de base === | === Commandes de base === | ||
| - | $ docker | + | Démarrer un docker |
| - | $ docker run -i -t debian /bin/bash | + | |
| + | $ docker search debian | ||
| + | $ docker run -i -t debian | ||
| + | root@< | ||
| + | |||
| + | Une fois la session fermée, on peut sauvegarder les modifications effectuées dans l' | ||
| + | | ||
| $ docker commit < | $ docker commit < | ||
| - | $ docker commit < | + | |
| + | On peut ensuite relancer son image //mydebian// | ||
| $ docker run -i -t mydebian /bin/bash | $ docker run -i -t mydebian /bin/bash | ||
| - | $ docker container ps -a | ||
| - | $ docker start/stop <commit ID> | ||
| + | Pour lister tous les conteneurs (actifs ou non) : | ||
| - | //à compléter...// | + | $ docker container ls -a |
| + | |||
| + | Stopper un conteneur actif : | ||
| - | === Pull & Push images === | + | $ docker container stop < |
| + | |||
| + | Pour rédémmarer un conteneur stoppé et récupérer la session interactive (attach) : | ||
| + | |||
| + | $ docker container start < | ||
| + | $ docker container attach < | ||
| + | |||
| + | Pour supprimer tous les conteneurs : | ||
| + | |||
| + | $ docker container rm $(docker container ls -a -q) | ||
| + | |||
| + | |||
| + | === Les images | ||
| + | |||
| + | Exporter un container en tgz : | ||
| + | |||
| + | $ docker export < | ||
| + | |||
| + | Importer une image tgz : | ||
| + | |||
| + | docker import - mydebian < mydebian.tgz | ||
| Les images docker publiques sont sur {{https:// | Les images docker publiques sont sur {{https:// | ||
| Line 46: | 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) | ||
| + | </ | ||
| + | |||
| + | To delete " | ||
| + | |||
| + | <code bash> | ||
| + | $ docker rmi $(docker images --filter " | ||
| + | </ | ||
| + | |||
| + | To remove all images (assuming all containers are removed): | ||
| + | |||
| + | <code bash> | ||
| + | $ docker rmi $(docker images -a -q) --force | ||
| + | </ | ||
| + | |||
| + | |||
| + | And the easiest way : | ||
| + | |||
| + | <code bash> | ||
| + | $ docker image prune | ||
| + | </ | ||
| === Dockerfile === | === Dockerfile === | ||
| Line 60: | Line 120: | ||
| | | ||
| | | ||
| + | Given a Dockerfile, you can build your own Docker image and push it on | ||
| + | | ||
| + | |||
| + | <code bash> | ||
| + | # build image | ||
| + | $ docker build -t " | ||
| + | # test it | ||
| + | $ docker run -i -t orel33/ | ||
| + | # login (need to be registered) | ||
| + | $ docker login | ||
| + | # push image | ||
| + | $ docker push orel33/ | ||
| + | </ | ||
| + | |||
| + | To pull this docker image: | ||
| + | |||
| + | <code bash> | ||
| + | $ docker pull orel33/ | ||
| + | </ | ||
| + | |||
| + | |||
| + | === Docker Volume === | ||
| + | |||
| + | In order to share data between two dockers, use data volume... as explained here : https:// | ||
| + | |||
| + | |||
| + | <code bash> | ||
| + | # create data volume container | ||
| + | $ docker run -it -v myvol:/data --name container1 orel33/ | ||
| + | root@4c3396f80dd3:/ | ||
| + | root@4c3396f80dd3:/ | ||
| + | |||
| + | # see my container | ||
| + | $ docker ps -a | ||
| + | CONTAINER ID IMAGE | ||
| + | 3345f3f32bdd | ||
| + | |||
| + | # see my volume | ||
| + | $ docker volume ls | ||
| + | DRIVER | ||
| + | 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 / | ||
| + | " | ||
| + | $ sudo ls / | ||
| + | hello | ||
| + | |||
| + | # mount the data volume from container1 in container2 | ||
| + | docker run -it --volumes-from container1 --name container2 orel33/ | ||
| + | |||
| + | # remove containers & volumes | ||
| + | $ docker rm container1 container2 | ||
| + | $ docker volume rm myvol # or docker volume prune | ||
| + | |||
| + | </ | ||
| + | |||
| + | More: https:// | ||
| + | And more: https:// | ||
| + | |||
| + | === 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 (/ | ||
| + | |||
| + | <code bash> | ||
| + | $ docker run -v / | ||
| + | |||
| + | ### inside docker ### | ||
| + | |||
| + | $ docker image ls | ||
| + | REPOSITORY | ||
| + | orel33/ | ||
| + | |||
| + | |||
| + | # create a deached container | ||
| + | # $ docker run -d --name mycontainer orel33/ | ||
| + | $ docker run -it --name container1 orel33/ | ||
| + | |||
| + | $ 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 | ||
| + | |||
| + | </ | ||
| + | | ||
| + | === Docker networking === | ||
| + | |||
| + | <code bash> | ||
| + | docker network create mynet | ||
| + | docker run --name host1 --network mynet -it orel33/ | ||
| + | docker run --name host2 --network mynet -it orel33/ | ||
| + | docker run --name host3 --network mynet -it orel33/ | ||
| + | docker run --name host4 --network mynet -it orel33/ | ||
| + | </ | ||
| + | |||
| + | TODO: Regarder toutes les options... | ||
| + | |||
| + | |||
| + | === Compose === | ||
| + | |||
| + | Todo... | ||
| + | |||
| + | |||
| + | === Docker Windows ==== | ||
| + | |||
| + | Sous Windows 10 (64 bit), suivre la procédure d' | ||
| + | |||
| + | Il existe de type de containers qui peuvent s' | ||
| + | |||
| + | |||
| === Misc === | === Misc === | ||
| * http:// | * http:// | ||
| * https:// | * https:// | ||
| + | * https:// | ||
docker/index.1515493502.txt.gz · Last modified: 2024/03/18 15:05 (external edit)
