Docker

De Justine's wiki
Version datée du 12 novembre 2018 à 22:51 par Justine (discussion | contributions) (Page créée avec « Les notes de cettes pages sont prises à partir de la documentation de docker : [https://docs.docker.com/get-started/ https://docs.docker.com/get-started/]   = Prés... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Les notes de cettes pages sont prises à partir de la documentation de docker : https://docs.docker.com/get-started/  

Présentation de Docker

Docker est une plateforme qui permet de développer, déployer et faire tourner des applications en conteneurs. L'usage de conteneur s'appelle la conteneurisation. Les conteneurs sont:

  • Flexibles : Tout peut être conteneurisé
  • Légers
  • Interchangeables
  • Portables
  • Scalables
  • Empilables

Un conteneur est lancé en faisant tourner une image : une image est un exécutable qui inclut tout ce dont a besoin le programme, et le conteneur est l'environnement d'exécution qui permet à cette image de fonctionner. Une fois lancé le conteneur est un processus utilisateur, que l'on peut lister avec docker ps. Les conteneurs partagent entre eux les ressources système et le noyau Linux. 

À la différence d'une VM, un conteneur peut tourner nativement sur n'importe quelle machine Linux; une même machine Linux peut utiliser plusieurs conteneurs, cette technologie est plus économe que les VM.

Préparer l'environnement Docker

On va commencer par installer Docker.

https://docs.docker.com/install/

Le versioning fonctionne sur le modèle : Année.Mois.Patch

Une fois installé, on peut tester avec docker --version.

On a plus d'informations avec docker info:

justine@Justine-pc:~$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 18.09.0
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d6de12e2f362cb9dc49ad957911996d3de59b338
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.18.0-10-generic
Operating System: Ubuntu 18.10
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.59GiB
Name: ***
ID: EN3D:SYGK:2WYA:TZM5:MHRP:FBOH:GQVD:VFKW:SDG6:V3FW:XSKK:5MAI
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

WARNING: No swap limit support

On peut ensuite ajouter son utilisateur au groupe docker:

sudo adduser user docker

Tester l'installation de Docker

Le test le plus simple consiste à faire tourner l'image hello-world :

justine@Justine-pc:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

 

Hello-world est une image simple qui permet de valider l'installation.

On peut lister les images télechargées avec docker image ls

...et lister les conteneurs avec docker container ls --all

Récapitulatif des commandes issu de la documentation Docker :

<code><span class="c">## List Docker CLI commands</span>
docker
docker container <span class="nt">--help</span>

<span class="c">## Display Docker version and info</span>
docker <span class="nt">--version</span>
docker version
docker info

<span class="c">## Execute Docker image</span>
docker run hello-world

<span class="c">## List Docker images</span>
docker image <span class="nb">ls</span>

<span class="c">## List Docker containers (running, all, all in quiet mode)</span>
docker container <span class="nb">ls
</span>docker container <span class="nb">ls</span> <span class="nt">--all</span>
docker container <span class="nb">ls</span> <span class="nt">-aq</span>
</code>