Skip to content

Docker

Lister les processus en cours :

docker ps -a

Images

Chaque processus dépendera d'une image pareil à une iso + son appli pour une vm. Chercher une image :

docker search nginx

Télécharger une image :

docker pull nginx

Lister les images téléchargées :

docker images

ou

docker image ls

Supprimer une image :

docker rmi nginx

⚠ Si une image est sur le disque mais nous est impossible de supprimer (on parlera d'une image souvent testé à l'installation de docker) Nous allons devoir forcer sa suppression :

docker rmi -f hello-world

Voir l'historique de son image :

docker history sboistel/image:verison(1.1)

Commit

Après avoir fait des changements sur une image, comment enregister tout ça ?

docker commit mycentos01 sboistel/mycentos:1.0

DockerFile

Créer un docker file : vim dockerfile

FROM centos
RPM yum install -y wget
RPM yum install yum-utils

Warning

Plus il y aura de nombre de ligne dans le dockerfile, plus le nombre de couche sera important et engedra les performences.

Construire l'image :

docker build -t sboistel/mycentos:1.0
docker build -t mon_image:v1.0

Champs

Liste des différents champs complétable :

  • FROM : Pour les images vierge seuelement !
  • LABEL version : Donner une version
  • LABEL description : Décrire la version
  • ENV : Variable d'environnement : Example
    • JAVA_HOME /usr/bin/java
    • ORACLE_HOME /u01/app/oracle/$ORACLE_SID/
  • RUN : Commande à effectuer "yum install .."
  • WORKDIR : Emplacement de travail
  • ...

Run / Exec

Plusieurs arguments serrons ici utilisés :

  • t : Avoir un terminal en sortie
  • i : Interactif

Exemple :

docker run -ti ubuntu

Exécuter une commande dans l'environnement Bash :

docker run -ti ubuntu ps

Exécuter une commande dans un conteneur détaché en cours d'éxécution :

docker exec -name=container01 -hostname=host01 centos ping 127.0.0.1

Attaché / Non Attaché

Exécuter l'image ubuntu avec des paramètres d'attachements :

docker run --name=container01 --hostname=host01 -it ubuntu

Exécuter l'image ubuntu avec des paramètres de détachement :

docker run -d -it centos ping 127.0.0.1

Du coup, où se passes les informations du conteneur détaché ? :

docker logs ID_DU_CONTAINER

Rappel pour avoir l'id du conteneur :

docker ps 

Afin de réccupérer la main sur la session du conteneur détaché :

docker attache ID_DU_CONTAINER

Revenir au mode détaché, faire la combinaison suivante : CTRL + Q

Inspecter un conteneur

Avoir les informations du conteneur en format json :

docker inspect container01

Agrégation de recherche

Récolter seulement ce qui nous intérèsse ?

  • Avoir un status
docker inspect --format='![](./Docker/.State.Status)' container01
  • Avoir l'iP du container01
docker inspect --format='![](./Docker/.NetworkSettings.IPAddress)' container01

Réccolter le tableau State :

docker inspect --format='![](./Docker/json .State)' container01

Filtres

Filtrer tout les conteneur ayant comme nom web :

docker ps -a --filter name=web

Filtrer tout les conteneurs ayant un status fermé :

docker ps -a --filter status=exited

Formater l'affichage

Formater la sortie :

docker ps -a --format "![](./Docker/.Names) : ![](./Docker/.Status)"

Import / Export

Export

Comment exporter son image ?

docker export -o mycentos01.tar mycentos

Vérifier son export :

tar tvf mycentos01.tar

Tout est ok, je compresse :

gzip mycentos01.tar

Import

Comment import une image exportée ? :

docker import mycentos.tar.gz mycentos:1.0

Containers

L'objectif de la conteneurisation est de faire en sorte qu'un ensemble logiciel cohérent puisse fonctionner au sein d'un conteneur.

Pour qu'une application puisse tourner au sein d'un conteneur, elle doit être empaquetée, c'est à dire qu'on la met à l'intérieur d'un paquet (une image dans la terminologie des conteneurs) avec ses dépendances.

Il existe d'ailleurs des images officielles, sur le Hub Docker par exemple, permettant de faire tourner tout type de logiciel (MySQL, Java 8, wordpresse, etc).

Type de système

Il y a plusieurs type de système de conteneurisation. Dotcloud plus connu sous le nom de Docker sera de moins en moins utilisé car tant à le déprécier.

On trouvera aussi :

  • CoreOS
  • Mesos
  • LXC
  • OpenVZ
  • Containerd
  • etc ...

Dockerless

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================