{
"builder": {
"gc": {
"defaultKeepStorage": "30GB",
"enabled": true
}
},
"default-address-pools": [
{
"base": "10.99.0.0/16",
"size": 24
}
],
"experimental": false
}
# install de sudo
apt install sudo
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker ps -a
docker ps -aq (juste l'id de chaque conteneur)
docker images list
docker exec -it container-id command (-tty -interactive)
docker run -d -p 80:80 --name apache-php -v /docker:/var/www/html php:7.4-apache
docker kill apache-php
docker rm apache-php
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariad -> recup ip.
docker run --name myadmin -d --link mariadb:db -p 9080:80 phpmyadmin
docker exec -it mariadb bash
docker commit -p db012f940cd7 container1
docker save -o ~/container1.tar container1
docker load -i /root/container1.tar
docker run --name webserver -d -p 80:80 -p 443:443 -it debian:latest /bin/bash -l
docker exec -it /bin/bash
docker commit container image-custom:version
docker save -o archive.tar
apt install wget lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update
docker run -di --name toto alpine:latest
docker exec -ti toto sh
docker run -tid -p 8080:80 --name web nginx:latest
docker inspect toto
docker start toto
docker stop toto
docker run -tid -p 8080:80 -v /srv/data/toto:/usr/share/nginx/html --name web nginx:latest
docker volume create totovol
docker volume ls
docker volume inspect totovol
docker run -tid -p 8080:80 --mount source=totovol,target=/usr/share/nginx/html --name web nginx:latest
docker run -tid --name toto --env MYVAR="toto" ubuntu:latest
docker run -tid --name toto --env-file vars.txt ubuntu:latest
docker run -tid --name toto --hostname toto.io ubuntu:latest
docker commit -m "nouvelle image custom" <id_image_source> toto:custom-1.0
docker image ls
docker run -tid --name imagecustom toto-custom-1.0
docker history <id_image_source>
dockerfile c'est quoi : fichier text avec séquence de tâches -> RUN / ENV (variables d'env) / EXPOSE (port mapping) / VOLUME / COPY (entre host et conteneur) / ENTRYPOINT (processus maitre du conteneur) exemple de dockerfile :
FROM ubuntu:latest
MAINTAINER hello c'est moi
ENV mavariable valeur
RUN apt-get update
RUN apt-get install vim
RUN apt-get install nmap \
&& apt-get clean \
&& rm -rf /tmp/*
(...)
VOLUME /var/www/html
COPY source /toto/destination
docker network create -d macvlan \
--subnet=192.168.2.0/24 \
--ip-range=192.168.2.128/25 \
--gateway=192.168.2.254 \
--aux-address="my-router=192.168.2.129" \
-o parent=eth0 wireguard_interne ?
docker built -t monimage:version . <point=dockerfile (Dockerfile en maj dans le rep courant, quoi)
docker image ls
docker history monimage:version
docker rmi monimage:version < suppression de l'image custom
option "--volumes-from", pour importer les volumes d'un autre conteneur
docker run -it --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /var/lib:/var/lib \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib/systemd:/usr/lib/systemd \
-v /etc:/etc --label docker_bench_security \
docker/docker-bench-security
docker tag image_source:version image_dest:version
rajouter un "tag image_dest:version" à l'image source d'un conteneur idem pour la registry , il faut tagger l'image à push par son nomd'image complet (voir la doc gitlab par ex)
docker save -o dir/fichier conteneur:version
docker load -i dir/fichier
le Bridge docker0 (en général 172.17.0.0/16) creer un autre réseau "bridge"
docker network create -d bridge --subnet 172.30.0.0/16 mynetwork
l'utiliser
docker run -tid --name conteneur1 --network mynetwork alpine
options de lancement réseau sur les conteneurs : --net : none --net : host --net container:nom-du-conteneur --link nom-du-conteneur > comme --net container mais ajout dans etc/host du conteneur lui-même options --dns dans le resolv.conf ou --add-host toto:ip pour rajouter dans le etc/hosts directement
...à partir d'un rep contenant le docker-compose.yml
docker-compose build
docker-compose up
docker-compose up -d
docker-compose ps
docker-compose start
docker-compose stop
docker-compose rm
docker-compose down (stop + rm en même temps)
docker-compose scale SERVICE=3
docker-compose pull (maj des images)
# Obtenir une version spécifique
apt-cache madison docker-ce | awk '{ print $3 }'
# L'installer
apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
sudo rm -rf /var/lib/containerd
sudo rm -r ~/.docker
This note is shared publicly by cedric