installation de docker desktop sur Linux
d'abord une mise a jour des repos
root@debL74:~# apt-get update
retrait d'eventuels anciennes installations docker deprecated
root@debL74:~# for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
# keys root@debL74:~# apt-get install ca-certificates curl root@debL74:~# curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc root@debL74:~# chmod a+r /etc/apt/keyrings/docker.asc # apt repo root@debL74:~# echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null root@debL74:~# cat /etc/apt/sources.list.d/docker.list deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable root@debL74:~# apt-get update
root@debL74~# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin root@debL74-14212:~# uname -a Linux debL74-14212 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux root@debL74-14212:~# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : docker-ce-rootless-extras pigz slirp4netns Paquets suggérés : aufs-tools cgroupfs-mount | cgroup-lite Les NOUVEAUX paquets suivants seront installés : containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin pigz slirp4netns 0 mis à jour, 8 nouvellement installés, 0 à enlever et 3 non mis à jour. Il est nécessaire de prendre 123 Mo dans les archives. Après cette opération, 441 Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n]
root@debL74# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world c1ec31eb5944: Pull complete Digest: sha256:305243c734571da2d100c8c8b3c3167a098cab6049c9a5b066b6021a60fcb966 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly.
root@debL74# service docker status ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled) Active: active (running) since Sat 2024-12-07 23:03:23 CET; 3min 25s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 939669 (dockerd) Tasks: 14 Memory: 31.2M CPU: 598ms CGroup: /system.slice/docker.service └─939669 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root@debL74# systemctl status containerd.service ● containerd.service - containerd container runtime Loaded: loaded (/lib/systemd/system/containerd.service; enabled; preset: enabled) Active: active (running) since Sat 2024-12-07 23:03:21 CET; 21min ago Docs: https://containerd.io Main PID: 939538 (containerd) Tasks: 13 Memory: 62.1M CPU: 1.955s CGroup: /system.slice/containerd.service └─939538 /usr/bin/containerd root@debL74# docker compose version Docker Compose version v2.29.7
pour qu'une utilisateur non privilegier puisse lancer des CT docker il faut qu'il ai des privileges qu'il acquiere en appartenant au groupe docker, root le promote dans ce groupe
root@debL74# usermod -aG docker jehan
le user rafraichit son environement
jehan@debL74$ su - jehan jehan@debL74$ id uid=1005(jehan) gid=1005(jehan) groupes=1005(jehan),100(users),994(docker)
jehan@debL74$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES jehan@debL74$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest d2c94e258dcb 19 months ago 13.3kB jehan@debL74$ docker run hello-world Hello from Docker!
rechercher une distribution linux
jehan@debL74$ docker search almalinux NAME DESCRIPTION STARS OFFICIAL almalinux/almalinux DEPRECATION NOTICE: This image is deprecated… 9 almalinux The official build of AlmaLinux OS. 176 [OK] almalinux/8-base AlmaLinux OS 8 official base image 1 almalinux/9-base AlmaLinux 9 Base container image 0 ... <code> recuperation de la distribution Linux <code> jehan@debL74-14212:~$ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu de44b265507a: Pull complete Digest: sha256:80dd3c3b9c6cecb9f1667e9290b3bc61b78c2678c02cbdae5f0fea92cc6734ab Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest
jehan@debL74$ docker image list REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest b1d9df8ab815 2 weeks ago 78.1MB hello-world latest d2c94e258dcb 19 months ago 13.3kB jehan@debL74$ docker inspect --format='{{json .RootFS}}' b1d9df8ab815 | jq { "Type": "layers", "Layers": [ "sha256:687d50f2f6a697da02e05f2b2b9cb05c1d551f37c404ebe55fdec44b0ae8aa5c" ] }
jehan@debL74$ docker info | grep -i "Storage Driver" Storage Driver: overlay2 jehan@debL74$ docker info | grep "Root Dir" WARNING: bridge-nf-call-iptables is disabled Docker Root Dir: /var/lib/docker
root@debL74-14212:~# du -sm /var/lib/docker/overlay2/df3026f153ed2fb49308f8124adf41b81dcc48384a1497a28ff445bffbd89782/* 84 /var/lib/docker/overlay2/df3026f153ed2fb49308f8124adf41b81dcc48384a1497a28ff445bffbd89782/diff 1 /var/lib/docker/overlay2/df3026f153ed2fb49308f8124adf41b81dcc48384a1497a28ff445bffbd89782/link
pour lancer notre image ubuntu et en instancier un container (CT) avec un shell interactif oouvert :
jehan@debL74$ docker run -it ubuntu root@c3b25bd7fa19:/# cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.1 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.1 LTS (Noble Numbat)"
monter une image mysql + phpMyAdmin avec un compose file en yaml
jehan@debL74:~/Docker$ cat ./docker-compose-mysql1.yml services: db: image: mysql:8 container_name: db restart: always environment: - MYSQL_USER=user - MYSQL_PASSWORD=user-secret - MYSQL_ROOT_PASSWORD=root-secret volumes: - ~/mysql-data:/var/lib/mysql ports: - 3306:3306 phpmyadmin: image: phpmyadmin container_name: phpmyadmin restart: always environment: - PMA_HOST=db - PMA_PORT=3306 ports: - 8081:80 depends_on: - db
jehan@debL74-14212:~/Docker$ docker compose --file ./docker-compose-mysql1.yml up -d [+] Running 31/2 ✔ db Pulled 26.4s ✔ phpmyadmin Pulled 38.0s [+] Running 3/3 ✔ Network docker_default Created 0.2s ✔ Container db Started 0.6s ✔ Container phpmyadmin Started
jehan@debL74:~/Docker$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 355a0c9fc396 phpmyadmin "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:8081->80/tcp, [::]:8081->80/tcp phpmyadmin 0dc0c7d82738 mysql:8 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp db
service phpMyAdmin consultable sur http://localhost:8081/
jehan@debL74:~/Docker$ cat ./dockerfile-phpjp1.dck FROM php:apache RUN docker-php-ext-install pdo pdo_mysql mysqli
jehan@debL74:~/Docker$ docker build --file dockerfile-phpjp1.dck . [+] Building 33.8s (6/6) FINISHED docker:default => [internal] load build definition from dockerfile-phpjp1.dck 0.1s => => transferring dockerfile: 112B 0.0s => [internal] load metadata for docker.io/library/php:apache 1.3s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [1/2] FROM docker.io/library/php:apache@sha256:204de2d31416e176774b98217beb8e078a9f3b55306b370d6a9f1f470af5f306 17.3s => => resolve docker.io/library/php:apache@sha256:204de2d31416e176774b98217beb8e078a9f3b55306b370d6a9f1f470af5f306 0.0s => => sha256:8a64a27210ceb93ea27ca865c5cf246274ba43f2d36bc96e7b2271b0e68cd3e3 104.15MB / 104.15MB ... => => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s => [2/2] RUN docker-php-ext-install pdo pdo_mysql mysqli 14.9s => exporting to image 0.1s => => exporting layers 0.1s => => writing image sha256:3f716064cbf1786dc96ef9bc2ae7897e224ab1cb60cc7f812e9e7e58913b0368
resultat, une image pas nomée “none” apparait
jehan@debL74:~/Docker$ docker image list REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 3f716064cbf1 18 seconds ago 513MB ubuntu latest b1d9df8ab815 2 weeks ago 78.1MB mysql 8 3818a28b4a67 7 weeks ago 594MB phpmyadmin latest a590866d53f0 17 months ago 558MB hello-world latest d2c94e258dcb 19 months ago 13.3kB
jehan@debL74-14212:~/Docker$ docker tag 3f716064cbf1 php-apache/jp1 jehan@debL74-14212:~/Docker$ docker image list REPOSITORY TAG IMAGE ID CREATED SIZE php-apache/jp1 latest 3f716064cbf1 4 minutes ago 513MB
jehan@debL74-14212:~/Docker$ mkdir ~/Docker/dck-www-site jehan@debL74:~/Docker$ echo "<html><h3>docker web site JP1</h3></html>" | tee ./dck-www-site/index.html <html><h3>docker web site JP1</h3></html>
jehan@debL74:~/Docker$ cat dockerfile-phpjp1.dck FROM php:apache RUN docker-php-ext-install pdo pdo_mysql mysqli
jehan@debL74:~/Docker$ cat docker-compose-phpsitejp1.yml services: php: build: dockerfile: ./dockerfile-phpjp1.dck container_name: php restart: always volumes: - ~/Docker/dck-www-site:/var/www/html ports: - 9090:80
instance de CT resultat de la combinaison du docker compose incluant le dockerfile ci-dessus
jehan@debL74:~/Docker$ docker compose --file ./docker-compose-phpsitejp1.yml up -d [+] Building 1.3s (7/7) FINISHED docker:default => [php internal] load build definition from dockerfile-phpjp1.dck 0.0s => => transferring dockerfile: 112B 0.0s => [php internal] load metadata for docker.io/library/php:apache 1.1s => [php internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [php 1/2] FROM docker.io/library/php:apache@sha256:204de2d31416e176774b98217beb8e078a9f3b55306b370d6a9f1f470af5f306 0.0s => CACHED [php 2/2] RUN docker-php-ext-install pdo pdo_mysql mysqli 0.0s => [php] exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:5c7cbcf942fd91e116d24dad0d4291035bb7570ab4b4666b2110787554a24c20 0.0s => => naming to docker.io/library/docker-php 0.0s => [php] resolving provenance for metadata file 0.0s WARN[0001] Found orphan containers ([phpmyadmin db]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. [+] Running 1/1 ✔ Container php Started 0.5s jehan@debL74:~/Docker$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b22bc9482808 docker-php "docker-php-entrypoi…" 24 seconds ago Up 23 seconds 0.0.0.0:9090->80/tcp, [::]:9090->80/tcp php
jehan@debL74:~/Docker$ docker exec -it b22bc9482808 bash root@b22bc9482808:/var/www/html# ls index.html
docker web site JP1