apt update
apt 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
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
apt install apt-transport-https gnupg2 software-properties-common
apt install docker-ce docker-ce-cli containerd.io
systemctl enable docker
usermod -aG docker admin
docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket
apparait :.bashrc
: source ~/.bashrc
docker run hello-world
Afin de pouvoir limiter la consommation de mémoire et de CPU des containers Docker, il est nécessaire de vérifier que le noyau Linux est compilé avec les bonnes options :
Si le noyau est correctement compiler, vous pouvez passer à l'étape suivante :
docker info
vi /etc/default/grub
GRUB_CMDLINE_LINUX="cdgroup_enable=memory swapaccount=1"
update-grub
reboot
docker info
/var/lib/docker/
sudo -i
systemctl stop docker
systemctl status docker
ps faux | grep -i docker
/etc/docker/daemon.json
dans lequel vous indiquerez le nouveau dossier : vi /etc/docker/daemon.json
/etc/docker/daemon.json
: { "data-root": "/data/docker" }
sudo mkdir /data/docker
rsync -avxP /var/lib/docker/ /data/docker
du -hs /var/lib/docker/; du -hs /data/docker
mv /var/lib/docker /var/lib/docker.old
systemctl start docker
systemctl status docker
rm -rf /var/lib/docker.old
docker
. Si la commande suivante afficher la version de Compose, inutile de suivre les étapes suivantes : docker compose version
apt install docker-compose-plugin
docker --help |grep compose
rm -f /usr/local/bin/docker-compose ; rm -f /etc/bash_completion.d/docker-compose
vi /etc/docker/daemon.json
{ "ipv6": true, "fixed-cidr-v6": "c01d:c01a:cafe::/64", "experimental": true, "ip6tables": true }
systemctl restart docker
docker network inspect bridge|grep EnableIPv6
docker network rm nginx-proxy
docker compose down; docker compose up -d
ports: - "0.0.0.0:80:80" - "0.0.0.0:443:443" - "[::]:80:80" - "[::]:443:443"
ss -6ltpn
environment: ENABLE_IPV6: true
docker network create --driver=bridge --ipv6 --subnet=172.18.5.0/24 --ip-range=172.18.5.0/24 --subnet a1f:ea75:ca75::/48 --gateway=172.18.5.1 nginx-proxy
Les fichiers docker-compose.yml des différents outils de suivi sont hébergés dans un dépôt Github. Il est nécessaire de copier ces fichiers sur les différentes instances afin de pouvoir les installer.
rsync
:rsync
suivante, ici pour web-srv et le dossier /web-srv/home/admin/docker avec l'option --dry-run
(à supprimer quand tout est ok) : rsync -av ./web-srv/home/admin/docker/ admin@web-<region>-sinp:/home/admin/docker/ --dry-run
Lorsqu'on lancer docker-compose up
, Docker-Compose se charge de créer les volumes nommés. Lors de leur création, il utilise le nom du dossier dans lequel se trouve le fichier docker-compose.yml
. Ainsi, si l'on change ultérieurement ce nom de dossier, Docker-Compose recréer de nouveaux volumes nommés au prochaine lancement.
Il est donc nécessaire de suivre la procédure suivante pour renommer le dossier d'une stack créé par Docker-Compose :
docker-compose down
mv monitor.silene.eu monitor
docker volume create \ --label com.docker.compose.project=<futur-nom-de-la-stack> \ --label com.docker.compose.version=<version-de-docker-compose> \ --label com.docker.compose.volume=<nom-du-volume> \ --name <futur-nom-de-la-stack>_<nom-du-volume>
docker volume create \ --label com.docker.compose.project=monitor \ --label com.docker.compose.version=1.24.1 \ --label com.docker.compose.volume=influxdb-storage \ --name monitor_influxdb-storage
docker run --rm -it \ -v <ancien-nom-de-la-stack>_<nom-du-volume>:/from:ro \ -v <futur-nom-de-la-stack>_<nom-du-volume>:/to \ alpine ash -c "cd /from ; cp -av . /to"
docker run --rm -it \ -v monitorsileneeu_influxdb-storage:/from:ro \ -v monitor_influxdb-storage:/to \ alpine ash -c "cd /from ; cp -av . /to"
docker-compose up -d
Il est possible de déplacer les volumes nommés d'un serveur à un autre :
docker compose down
systemctl stop docker
/var/lib/docker/volumes/
rsync -e 'ssh -p <bkp-srv-ssh-port>' -avxP analytics_matomo-storage/ admin@bkp-paca-sinp:~/dwl/analytics_matomo-storage/
/data/docker/
) : mv analytics_matomo-storage /data/docker/volumes/
chown –from=admin root -R /data/docker/volumes/analytics_matomo-storage
.env
pour adapter la configuration au nouveau serveur.docker compose up -d
journalctl -x -u docker.service
docker run <image>
docker image ls -a
docker image rm <image id>
docker container ls --all
docker container rm <hash>
docker build -t <nom>:<tag> .
docker exec -it <container name> /bin/bash
ip
est installé - paquet iproute2), afficher l'IP de l'hôte : ip route|awk '/default/ { print $3 }
'docker system df
docker system df --verbose
docker system prune
docker system prune --volumes
docker-compose build [SERVICE...]
docker-compose build --pull [SERVICE...]
docker-compose build --no-cache
docker-compose config
docker-compose config --services
docker-compose config --volumes
docker-compose down
docker-compose down --volumes
docker-compose down --volumes --rmi all
docker-compose up -d --no-deps --build <service-name>
docker-compose exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
docker-compose images [SERVICE...]
docker-compose logs [options] [SERVICE...]
Ex. docker-compose logs -f --tail=3