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/01/07 03:05] – ↷ Page déplacée de wiki:kb_it:docker à kb_it:docker 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>
-REGISTRY="https://registry.hub.docker.com"+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>
  
-image=$1+===== Astuces pour la construction d'images =====
  
-command -v curl >/dev/null 2>&1 || { echo >&2 "curl is not installed.  Aborting."; exit 1; } +==== Prendre en charge Ctrl+C dans un script bash ====
-command -v jq >/dev/null 2>&1 || { echo >&2 "jq is not installed.  Aborting."; exit 1; }+
  
-i=0 +<code bash> 
-while [ $? == 0 ] +# Add support for CTRL+C 
-do +exit_func() { 
-   i=$((i+1)+  exit 1 
-   curl $REGISTRY/v2/repositories/library/$image/tags/?page=$i 2>/dev/null|jq '."results"[]["name"]' +} 
-done+trap exit_func SIGTERM SIGINT
 </code> </code>
  
-==== Extraire le Dockerfile d'une image ====+===== Divers ===== 
 + 
 +==== Maintenir un container en vie ==== 
 + 
 +docker-compose.yml 
 +<code yaml> 
 +entrypoint: 'tail -f /dev/null' 
 +</code> 
 + 
 +==== Lister les PID des conteneurs ====
  
 <code bash> <code bash>
-docker history --no-trunc [image]  | tac | tr -s ' ' | 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+for i in $(docker container ls --format "{{.ID}}"); do docker inspect -f '{{.State.Pid}} {{.Name}}' $i; done
 </code> </code>
  
-===== Commandes améliorées =====+==== Voir les adresses IP des conteneurs ====
  
-==== ps ====+<code bash> 
 +docker ps -q | xargs -n 1 docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{ .Name }}' | sed 's/ \// /' 
 +</code> 
 + 
 +==== Commandes diverses ==== 
 + 
 +==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>