Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
kb_it:docker [2022/02/03 21:20] – [Lister tous les tags d'une image] befekb_it:docker [2025/12/06 11:53] (Version actuelle) befe
Ligne 41: Ligne 41:
 docker run --rm -v osx-big-sur_data:/volume -v `pwd`/data:/target busybox sh -c 'cp -a /volume/* /target/' docker run --rm -v osx-big-sur_data:/volume -v `pwd`/data:/target busybox sh -c 'cp -a /volume/* /target/'
 </code> </code>
 +
 ===== Commandes secondaires ===== ===== Commandes secondaires =====
  
Ligne 49: Ligne 50:
 <code bash> <code bash>
 docker inspect -f '{{ .Created }}' IMAGE_OR_CONTAINER docker inspect -f '{{ .Created }}' IMAGE_OR_CONTAINER
 +</code>
 +
 +===== Gestion du réseau =====
 +
 +==== Utilisation du driver macvlan ====
 +
 +Cas d'utilisation :
 +
 +Exposition d'un serveur DNS conténeurisé avec une @IP spécifique et communication possible entre l'hôte et le conteneur.
 +
 +<code bash>
 +docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.254 --ip-range 192.168.0.1/27 --aux-address "host=192.168.0.1" -o parent=enp0s3 befe.lan
 +</code>
 +
 +docker-compose.yml
 +<code yml>
 +version: "3.7"
 +
 +networks:
 +  befe.lan:
 +    external: true
 +
 +services:
 +  adguard:
 +    image: adguard/adguardhome:v0.107.26
 +    networks:
 +      befe.lan:
 +        ipv4_address: 192.168.0.2
 +    ports:
 +      - 192.168.0.2:53:53/tcp # DNS
 +      - 192.168.0.2:53:53/udp # DNS
 +</code>
 +
 +<code bash>
 +ip link add befe.lan-shim link enp0s3 type macvlan mode bridge
 +ip addr add 192.168.0.253/32 dev befe.lan-shim
 +ip link set befe.lan-shim up
 +ip route add 192.168.0.2/32 dev befe.lan-shim
 +</code>
 +
 +Pour une configuration persistante :
 +
 +/etc/network/interfaces.d/befe.lan-shim
 +<code>
 +auto befe.lan-shim
 +iface befe.lan-shim inet manual
 +        pre-up    /bin/ip link  add befe.lan-shim link enp0s3 type macvlan mode bridge
 +        up        /bin/ip addr  add 192.168.0.253/32 dev befe.lan-shim
 +        post-up   /bin/ip route add 192.168.0.2/32   dev befe.lan-shim
 +        post-down /bin/ip route del befe.lan-shim
 +</code>
 +
 +===== Gestion du mode graphique =====
 +
 +==== Lancer un conteneur en mode graphique ====
 +
 +<code bash>
 +docker run --rm -it \
 +  --net=host \
 +  -e DISPLAY \
 +  -v /home/me/.Xauthority:/root/.Xauthority \
 +  gns3/xeyes
 </code> </code>
  
Ligne 99: Ligne 162:
 RUN addgroup docker-test --gid 1000 && \ RUN addgroup docker-test --gid 1000 && \
  adduser docker-test --debug --no-create-home --disabled-password --gecos "" --uid 1000 --gid 1000  adduser docker-test --debug --no-create-home --disabled-password --gecos "" --uid 1000 --gid 1000
 +</code>
 +
 +===== Healthcheck =====
 +
 +==== httpd ====
 +
 +<code yml>
 +healthcheck:
 +  test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1
 +  interval: 60s
 +  timeout: 30s
 +  retries: 3
 </code> </code>
  
 ===== Registry ===== ===== Registry =====
  
-==== Lister les 10 premiers tags d'une image ====+==== Lister les tags d'un dépôt ====
  
 <code bash> <code bash>
-curl 'https://registry.hub.docker.com/v2/repositories/library/debian/tags/'|jq '."results"[]["name"]'+docker run -t --rm benjaminferon/docker-tags <DEPOT>
 </code> </code>
  
-==== Lister tous les tags d'une image ====+===== Commandes améliorées ===== 
 + 
 +==== ps ====
  
 <code bash> <code bash>
-#!/bin/bash+docker ps -a --format="table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Command}}\t{{.Status}}\t{{.Ports}}" | awk 'NR<2{print $0;next}{print $0 | "sort --key=2"}' 
 +</code>
  
-# Don't understand why but whether the repository name contain "/" in its name, registry address must be diffrent ! +===== Astuces pour la construction d'images =====
-# If someone has an idea...+
  
-REGISTRY_FOR_REPO_WITHOUT_SLASH="https://registry.hub.docker.com" +==== Prendre en charge Ctrl+C dans un script bash ====
-REGISTRY_FOR_REPO_WITH_SLASH="https://hub.docker.com" +
-PAGE_SIZE=100+
  
-REPO=$1+<code bash> 
 +# Add support for CTRL+C 
 +exit_func() { 
 +  exit 1 
 +
 +trap exit_func SIGTERM SIGINT 
 +</code>
  
-command -v curl >/dev/null 2>&1 || { echo >&2 "curl is not installed. Aborting."; exit 1; } +===== Divers =====
-command -v jq >/dev/null 2>&1 || { echo >&2 "jq is not installed. Aborting."; exit 1; }+
  
-if [[ ! "$REPO" =~ "/" ]]; then +==== Maintenir un container en vie ====
-  url="$REGISTRY_FOR_REPO_WITHOUT_SLASH/v2/repositories/library/$REPO/tags" +
-else +
-  url="$REGISTRY_FOR_REPO_WITH_SLASH/v2/repositories/$REPO/tags" +
-fi+
  
-count=$(curl "$url/?page=1&page_size=1" 2>/dev/null|jq '."count"')+docker-compose.yml 
 +<code yaml> 
 +entrypoint: 'tail -f /dev/null' 
 +</code>
  
-i=1 +==== Lister les PID des conteneurs ==== 
-while [ $count -gt 0 ] + 
-do +<code bash> 
-   curl "$url/?page=$i&page_size=$PAGE_SIZE2>/dev/null|jq '."results"[]["name"]' +for in $(docker container ls --format "{{.ID}}"); do docker inspect -f '{{.State.Pid}} {{.Name}}' $idone
-   i=$((i+1)) +
-   count=$((count-PAGE_SIZE)) +
-done+
 </code> </code>
  
-==== Extraire le Dockerfile d'une image ====+==== Voir les adresses IP des conteneurs ====
  
 <code bash> <code bash>
-docker history --no-trunc [image]  | tac | tr -' ' | cut -d " " -f 5- | sed 's,^/bin/sh -c #(nop) ,,g' | sed 's,^/bin/sh -c,RUN,g| sed 's, && ,\n  & ,g' | sed 's,\s*[0-9]*[\.]*[0-9]*\s*[kMG]*B\s*$,,g' | head -n -1+docker ps -q | xargs -n 1 docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{ .Name }}' | sed 's/ \// /'
 </code> </code>
  
-===== Commandes améliorées =====+==== Commandes diverses ====
  
-==== ps ====+=== PHP Composer et limitation de la mémoire ===
  
 <code bash> <code bash>
-docker ps ---format="table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Command}}\t{{.Status}}\t{{.Ports}}| awk 'NR<2{print $0;next}{print $0 | "sort --key=2"}'+docker run -it --rm -v $(pwd):/app -w /app -e COMPOSER_MEMORY_LIMIT=-1 composer:latest bash -c "php -r \"ini_set('memory_limit', '8G');\&& composer update" 
 +</code> 
 + 
 +===== Problèmes connus ===== 
 + 
 +==== MySQL/MariaDB :  ==== 
 + 
 +<code> 
 +Error: io_setup() failed with EAGAIN after 5 attempts 
 +</code> 
 + 
 +<code bash> 
 +$ sysctl fs.aio-max-nr 
 +fs.aio-max-nr 65536 
 +sudo sysctl -w fs.aio-max-nr=2097152
 </code> </code>