Outils pour utilisateurs

Outils du site


tech:notes_docker

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
tech:notes_docker [2025/03/26 09:22] Jean-Baptistetech:notes_docker [2025/12/05 11:50] (Version actuelle) Jean-Baptiste
Ligne 5: Ligne 5:
 Voir : Voir :
 * ''namespace.unpriv_enable=1'' * ''namespace.unpriv_enable=1''
 +* [[Scan de vulnérabilité pour les images de conteneurs]]
  
 Voir aussi OpenContainers : Voir aussi OpenContainers :
Ligne 16: Ligne 17:
 * https://docs.oracle.com/cd/E52668_01/E75728/html/docker_admin_config.html * https://docs.oracle.com/cd/E52668_01/E75728/html/docker_admin_config.html
  
-Script +DjangoMise en place de l’HTTPS via Nginx 
-* https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh+* https://nextcloud.inrae.fr/s/gtSrdE98Knp7HGf?openfile=true 
 + 
 +Mise en production de Django via Docker 
 +* https://nextcloud.inrae.fr/s/rdMSmet4miWkz8Q?openfile=true
  
 Docker et sécurité : Docker et sécurité :
 * https://resinfo.org/IMG/pdf/secu-docker.pdf * https://resinfo.org/IMG/pdf/secu-docker.pdf
-* [[https://computingforgeeks.com/scan-docker-container-images-with-trivy/|Scan Docker Container Images for Vulnerabilities with Trivy]] 
  
  
Ligne 43: Ligne 46:
  
 Vérifier les prérequis :  Vérifier les prérequis : 
 +# https://github.com/moby/moby/blob/master/contrib/check-config.sh
 +https://github.com/opencontainers/runc/blob/main/script/check-config.sh
 +
 +
 +
  
-<code bash> 
-# https://github.com/moby/moby/blob/master/contrib/check-config.sh 
-wget https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh 
-chmod +x check-config.sh 
-./check-config.sh 
-</code> 
  
 === Debian === Debian
  
-<code - /etc/default/grub>+'' /etc/default/grub'' 
 +<code ->
 GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
 </code> </code>
Ligne 60: Ligne 63:
 update-grub update-grub
 </code> </code>
 +
  
 === RedHat === RedHat
Ligne 74: Ligne 78:
 yum install docker-latest #docker #docker-distribution yum install docker-latest #docker #docker-distribution
 </code> </code>
 +
  
 === Si conf proxy Docker et SystemD === Si conf proxy Docker et SystemD
Ligne 83: Ligne 88:
 </code> </code>
  
-<code ini /etc/systemd/system/docker-latest.service.d/http-proxy.conf>+''/etc/systemd/system/docker-latest.service.d/http-proxy.conf'' 
 +<code ini>
 [Service] [Service]
-Environment = "HTTP_PROXY=http://192.168.56.1:3128/" "HTTPS_PROXY=http://192.168.56.1:3128/"+Environment = "HTTP_PROXY=http://192.168.56.1:3128/" "HTTPS_PROXY=http://192.168.56.1:3128/" 
 +Environment = "http_proxy=http://192.168.56.1:3128/" "https_proxy=http://192.168.56.1:3128/"
 </code> </code>
  
Ligne 106: Ligne 113:
  
 Voir :  Voir : 
 +* https://book.hacktricks.wiki/en/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/index.html
 * https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.6_Benchmark_v1.0.0.pdf * https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.6_Benchmark_v1.0.0.pdf
 * https://docs.oracle.com/en/operating-systems/oracle-linux/podman/podman-SecurityRecommendations.html * https://docs.oracle.com/en/operating-systems/oracle-linux/podman/podman-SecurityRecommendations.html
Ligne 115: Ligne 123:
  
 === Droits pour utilisateur non root === Droits pour utilisateur non root
 +
  
  
Ligne 121: Ligne 130:
 docker run -ti --privileged -v /:/host debian chroot /host docker run -ti --privileged -v /:/host debian chroot /host
 docker run -ti --userns=host --privileged -v /:/host debian chroot /host docker run -ti --userns=host --privileged -v /:/host debian chroot /host
 +
 +#List images to use one
 +docker images
 +#Run the image mounting the host disk and chroot on it
 +docker run -it -v /:/host/ ubuntu:18.04 chroot /host/ bash
 +
 +# Get full access to the host via ns pid and nsenter cli
 +docker run -it --rm --pid=host --privileged ubuntu bash
 +nsenter --target 1 --mount --uts --ipc --net --pid -- bash
 +
 +# Get full privs in container without --privileged
 +docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash
 +
 </code> </code>
 +
 +Voir :
 +* ''--security-opt apparmor=unconfined''
 +* ''--security-opt seccomp=unconfined''
 +* ''--security-opt label:disable''
 +
  
 Voir : http://www.projectatomic.io/blog/2015/08/why-we-dont-let-non-root-users-run-docker-in-centos-fedora-or-rhel/ Voir : http://www.projectatomic.io/blog/2015/08/why-we-dont-let-non-root-users-run-docker-in-centos-fedora-or-rhel/
Ligne 137: Ligne 165:
 * Podman * Podman
 * kata-containers * kata-containers
 +
 +
 +=== Droits montage
 +
 +<code bash>
 +docker run -v /mnt:/mnt:ro
 +</code>
 +
 +
 +doesn't really make /mnt inside the container read-only
 +Submounts like /mnt/usbdisk are writable
  
  
Ligne 153: Ligne 192:
  
 ** Le fichier ''/etc/sysconfig/docker'' n'est pas utilisé avec SystemD** ** Le fichier ''/etc/sysconfig/docker'' n'est pas utilisé avec SystemD**
-<code - /etc/sysconfig/docker>+ 
 +''/etc/sysconfig/docker'' 
 +<code ->
 #OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false' #OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
 </code> </code>
Ligne 167: Ligne 208:
 </code> </code>
  
-<code javascript /etc/docker/daemon.json>+''/etc/docker/daemon.json'' 
 +<code javascript>
 { {
         "userns-remap": "default",         "userns-remap": "default",
Ligne 192: Ligne 234:
 systemctl daemon-reload systemctl daemon-reload
 </code> </code>
 +
 +
  
 == Stockage == Stockage
Ligne 215: Ligne 259:
 </code> </code>
  
-<code c /etc/lvm/profile/docker-thinpool.profile>+''/etc/lvm/profile/docker-thinpool.profile'' 
 +<code c>
 activation { activation {
   thin_pool_autoextend_threshold=80   thin_pool_autoextend_threshold=80
Ligne 234: Ligne 279:
 docker ps -a --filter volume=data-nfs3 docker ps -a --filter volume=data-nfs3
 </code> </code>
 +
 +
 === Notes RedHat === Notes RedHat
  
Ligne 244: Ligne 291:
 </code> </code>
  
-<code - /etc/sysconfig/docker-storage>+''/etc/sysconfig/docker-storage'' 
 +<code ->
 #DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/rhel-docker--pool --storage-opt dm.use_deferred_removal=true " #DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/rhel-docker--pool --storage-opt dm.use_deferred_removal=true "
 DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/rhel-docker0 --storage-opt dm.use_deferred_removal=true " DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/rhel-docker0 --storage-opt dm.use_deferred_removal=true "
Ligne 251: Ligne 299:
 Voir aussi :  Voir aussi : 
 * /usr/lib/docker-storage-setup/docker-storage-setup * /usr/lib/docker-storage-setup/docker-storage-setup
 +
  
 === Debian === Debian
Ligne 259: Ligne 308:
 apt-get install thin-provisioning-tools apt-get install thin-provisioning-tools
 </code> </code>
 +
  
 === RedHat 7 === RedHat 7
Ligne 265: Ligne 315:
 à la 1ere install à la 1ere install
  
-<code ini /etc/sysconfig/docker-latest-storage>+''/etc/sysconfig/docker-latest-storage'' 
 +<code ini>
 # This file may be automatically generated by an installation program. # This file may be automatically generated by an installation program.
  
Ligne 281: Ligne 332:
 DOCKER_STORAGE_OPTIONS= DOCKER_STORAGE_OPTIONS=
 </code> </code>
 +
  
 == Réseau == Réseau
Ligne 300: Ligne 352:
 Le hôte du container est indiqué par ''host.containers.internal'' (podman) Le hôte du container est indiqué par ''host.containers.internal'' (podman)
  
-<code - /etc/hosts>+''/etc/hosts'' 
 +<code ->
 127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4 127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1     localhost localhost.localdomain localhost6 localhost6.localdomain6 ::1     localhost localhost.localdomain localhost6 localhost6.localdomain6
Ligne 307: Ligne 360:
 10.88.0.176     1264dc4981c1 boring_chaplygin 10.88.0.176     1264dc4981c1 boring_chaplygin
 </code> </code>
 +
 +
  
 === Conf Default bridge VLAN === Conf Default bridge VLAN
  
  
-<code javascript /etc/docker/daemon.json>+''/etc/docker/daemon.json'' 
 +<code javascript>
 { {
 "bip": "192.168.10.1/24" "bip": "192.168.10.1/24"
Ligne 325: Ligne 381:
 systemctl status docker systemctl status docker
 </code> </code>
 +
  
 == Import / Export images Docker == Import / Export images Docker
Ligne 339: Ligne 396:
 docker load -i <path to image tar file> docker load -i <path to image tar file>
 </code> </code>
 +
 +
 == Debug == Debug
  
Ligne 350: Ligne 409:
 systemctl stop docker-latest ; rm -rf /var/lib/docker ; /usr/bin/docker daemon --debug --storage-driver 'devicemapper' --storage-opt 'dm.thinpooldev=/dev/mapper/docker-pool0' --storage-opt 'dm.fs=xfs' --storage-opt 'dm.use_deferred_removal=true' systemctl stop docker-latest ; rm -rf /var/lib/docker ; /usr/bin/docker daemon --debug --storage-driver 'devicemapper' --storage-opt 'dm.thinpooldev=/dev/mapper/docker-pool0' --storage-opt 'dm.fs=xfs' --storage-opt 'dm.use_deferred_removal=true'
 </code> </code>
 +
  
 == Autres == Autres
Ligne 355: Ligne 415:
 Dépôt (Docker Registry) Dépôt (Docker Registry)
 * https://sites.google.com/site/grow4wiki/documentation/docker  * https://sites.google.com/site/grow4wiki/documentation/docker 
 +
  
 === Architecture x86 amd64 arm === Architecture x86 amd64 arm
Ligne 361: Ligne 422:
 docker run --platform linux/amd64 --publish 8000:8080 ghcr.io/mermaid-js/mermaid-live-editor docker run --platform linux/amd64 --publish 8000:8080 ghcr.io/mermaid-js/mermaid-live-editor
 </code> </code>
 +
  
 === Notes brouillon === Notes brouillon
Ligne 366: Ligne 428:
 ==== Namespace ==== Namespace
  
-Voir : https://blog.yadutaf.fr/2016/04/14/docker-for-your-users-introducing-user-namespace/+Voir :  
 +https://blog.yadutaf.fr/2016/04/14/docker-for-your-users-introducing-user-namespace
 +* https://www.devoteam.com/fr/expert-view/la-migration-vers-podman-est-elle-la-solution-pour-se-passer-de-docker/
  
-<code - /etc/subuid>+''/etc/subuid'' 
 +<code ->
 dockremap:100000:65536 dockremap:100000:65536
 </code> </code>
  
-<code - /etc/subgid>+''/etc/subgid'' 
 +<code ->
 dockremap:100000:65536 dockremap:100000:65536
 </code> </code>
 +
 +
 == Perf strest test pour prod == Perf strest test pour prod
  
 https://hub.docker.com/r/monitoringartist/docker-killer/ https://hub.docker.com/r/monitoringartist/docker-killer/
 +
  
 == Pb == Pb
Ligne 442: Ligne 511:
 </code> </code>
  
-=== Proxy (sous Debian)+ 
 +=== Proxy
  
 <code bash> <code bash>
-export http_proxy="http://192.168.56.1:3128/"+export ALL_PROXY="http://192.168.56.1:3128/"
 </code> </code>
  
Ligne 553: Ligne 623:
 grep CRIT /var/lib/docker/containers/*/*.log grep CRIT /var/lib/docker/containers/*/*.log
 </code> </code>
 +
  
 == Notes DNS Bind9 == Notes DNS Bind9
Ligne 582: Ligne 653:
 </code> </code>
  
-<code ini /etc/default/grub>+''/etc/default/grub'' 
 +<code ini>
 GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
 </code> </code>
Ligne 630: Ligne 702:
 docker save -o plop.tar.gz acme/jibe docker save -o plop.tar.gz acme/jibe
 </code> </code>
 +
  
 ==== Notes console TTY ==== Notes console TTY
Ligne 638: Ligne 711:
  
 If you use -t and -i then Control-C will terminate the container. When using -i with -t then you have to use Control-P Control-Q to detach without terminating. If you use -t and -i then Control-C will terminate the container. When using -i with -t then you have to use Control-P Control-Q to detach without terminating.
 +
  
 ==== Notes Haute dispo / Cluster ==== Notes Haute dispo / Cluster
Ligne 705: Ligne 779:
 docker run -it --volume /opt/data --name data2 busybox docker run -it --volume /opt/data --name data2 busybox
  
-docker inspect  --format "{{ .Mounts }}" data2+docker inspect --format "{{ .Mounts }}" data2 
 +docker inspect -f '{{ .Mounts }}' my-container
  
  
tech/notes_docker.1742977378.txt.gz · Dernière modification : de Jean-Baptiste

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki