RSS link icon

Docker - Exécuter des commandes sur un conteneur

Publication : le 03 sept. 2020 - Dernière modification : le 03 sept. 2020

Utiliser Docker permet entre autre de tester des commandes ou des outils sur des systèmes sans les installer ni créer de machine virtuelle. C'est rapide, simple et efficace.

Prérequis

  • Système d'exploitation Linux
  • Service Docker installé sur le système
  • Avoir les droits root ou avoir fait en sorte que Docker soit utilisable sans droits root.
  • Connexion à internet

Récupérer une image Docker en local

Pour créer un conteneur, nous devons posséder une image Docker. Le plus simple est de la télécharger depuis le Registry officiel. Ici, nous récupérons une image ubuntu 18.04.

$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
f08d8e2a3ba1: Pull complete 
3baa9cb2483b: Pull complete 
94e5ff4c0b15: Pull complete 
1860925334f9: Pull complete 
Digest: sha256:05a58ded9a2c792598e8f4aa8ffe300318eac6f294bf4f49a7abae7544918592
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

Afficher la liste des images locales disponibles

Afin d'afficher les images Docker disponibles localement, il suffit d'exécuter la commande suivante :

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               6526a1858e5d        2 weeks ago         64.2MB

Créer un conteneur qui ne se termine jamais

Du fait que nous souhaitons tester des choses sur l'image Docker, nous souhaitons créer un conteneur de cette image. Cependant, par défaut, Docker créera le conteneur et le stoppera rapidement du fait que nous n'avons rien à faire tourner indéfiniment dessus. Heureusement, il existe une commande permettant de forcer à garder le conteneur actif, telle que :

$ docker run -dt ubuntu:18.04 bash
6715a75e59cac46f6f6fae5faad5672e3d87be6236d424a78d05ed30b8845bc3

Nous obtenons en sortie l'ID du conteneur.

Lister les conteneurs actifs

Afin de s'assurer que le conteneur précédement lancé tourne toujours, il suffit de lancer la commande listant tous les conteneurs actuellement actifs :

$ docker container ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
6715a75e59ca        ubuntu:18.04        "bash"              About a minute ago   Up About a minute                       gracious_elgamal

Dans la colonne CONTAINER ID, nous retrouvons l'ID de notre conteneur.

Copier un fichier dans un conteneur

Si nous souhaitons copier un fichier dans le conteneur, il suffit d'exécuter la commande suivante :

# docker cp <mon fichier> <conteneur ID>:<chemin ou deposer le fichier>/<mon fichier>
$ docker cp myscript.sh 6715a75e59ca:/home/myscript.sh

Se connecter au conteneur

Pour exécuter des commandes sur le conteneur, il faut s'y connecter :

$ docker exec -it 6715a75e59ca bash
root@6715a75e59ca:/#

Nous sommes alors dans le conteneur. Nous pouvons maintenant travailler et faire nos tests.

Par exemple :

root@6715a75e59ca:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Enjoy.

Stopper un conteneur

Attention, stopper le conteneur vous fera perdre tous les travaux et modifications effectués dans celui-ci. Pensez à bien récupérer vos données avec la commande docker cp <src> <dst>.

Une fois que nos travaux et/ou nous tests sont terminés, nous pouvons stopper le conteneur.

$ docker stop 6715a75e59ca