Docker: Porovnání verzí
Z Poznámkový blok
(→Otevření socketu ven) |
|||
| (Nejsou zobrazeny 4 mezilehlé verze od stejného uživatele.) | |||
| Řádka 12: | Řádka 12: | ||
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ | "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ | ||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | ||
| + | sudo apt update | ||
| − | === Instalace | + | === Instalace === |
sudo apt update | sudo apt update | ||
| − | sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin | + | sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
* https://docs.docker.com/engine/install/debian/ | * https://docs.docker.com/engine/install/debian/ | ||
| + | == Vytvoření self-signed certifikátu == | ||
| + | Doporučuji si nachystat prostředí | ||
| + | mkdir /etc/ssl/certs/docker | ||
| + | chmod -v 0444 /etc/ssl/certs/docker | ||
| + | cd /etc/ssl/certs/docker | ||
| + | |||
| + | Vytváření server certifikát na 10 let (Měnit proměný který obsahují $) | ||
| + | openssl genrsa -aes256 -out ca-key.pem 4096 | ||
| + | openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem | ||
| + | |||
| + | openssl genrsa -out server-key.pem 4096 | ||
| + | openssl req -subj "/CN=$LOCALHOST_DOMAIN" -sha256 -new -key server-key.pem -out server.csr | ||
| + | |||
| + | echo subjectAltName = DNS:$LOCALHOST_DOMAIN,DNS:$HOST_DOMAIN,IP:127.0.0.1 >> extfile.cnf | ||
| + | echo extendedKeyUsage = serverAuth >> extfile.cnf | ||
| + | openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf | ||
| + | |||
| + | Vytváření client certifikát na 10 let | ||
| + | openssl genrsa -out key.pem 4096 | ||
| + | openssl req -subj '/CN=client' -new -key key.pem -out client.csr | ||
| + | echo extendedKeyUsage = clientAuth > extfile-client.cnf | ||
| + | openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf | ||
| + | |||
| + | Změna práv pro certifikáty a pročištění | ||
| + | chmod -v 0400 ca-key.pem key.pem server-key.pem | ||
| + | chmod -v 0444 ca.pem server-cert.pem cert.pem | ||
| + | |||
| + | rm -v client.csr server.csr extfile.cnf extfile-client.cnf | ||
| + | |||
| + | * https://medium.com/trabe/using-docker-engine-api-securely-584e0882158e | ||
| + | * https://docs.docker.com/engine/security/protect-access/ | ||
| + | |||
== Otevření socketu ven == | == Otevření socketu ven == | ||
=== Override config === | === Override config === | ||
sudo mkdir /etc/systemd/system/docker.service.d | sudo mkdir /etc/systemd/system/docker.service.d | ||
| − | + | nano /etc/systemd/system/docker.service.d/override.conf | |
| + | |||
| + | Nastavení pro nešifrovaný otevření socketu, nedoporučeno | ||
| + | [Service] | ||
| + | ExecStart= | ||
| + | ExecStart=/usr/bin/dockerd -H fd:// -H tcp://IP_ADRESA:2735 --ipv6=false --tls=false | ||
| − | + | Nastavení pro šifrovaný otevření socketu, doporučeno | |
[Service] | [Service] | ||
ExecStart= | ExecStart= | ||
| − | ExecStart=/usr/bin/dockerd -H | + | ExecStart=/usr/bin/dockerd -H fd:// -H tcp:///IP_ADRESA:2376 --ipv6=false --tlsverify --tlscacert=/CESTA/ca.pem --tlscert=/CESTA/server-cert.pem --tlskey=/CESTA/server-key.pem |
| + | * https://docs.docker.com/config/daemon/remote-access/ | ||
* https://stackoverflow.com/questions/57996938/could-not-edit-systemd-service-file | * https://stackoverflow.com/questions/57996938/could-not-edit-systemd-service-file | ||
=== Restartování === | === Restartování === | ||
sudo systemctl daemon-reload | sudo systemctl daemon-reload | ||
| − | sudo systemctl restart docker | + | sudo systemctl restart docker.service |
| + | |||
| + | === Povolení ufw === | ||
| + | ufw allow 2375/tcp | ||
| + | nebo | ||
| + | ufw allow 2376/tcp | ||
| + | |||
| + | |||
| + | == Číštění == | ||
| + | Zjištění kolik a co zabírá místo na disku | ||
| + | docker system df | ||
| + | docker system df --verbose | ||
| + | Zjištění kolik místa zabírají logy | ||
| + | <nowiki>sudo du -ch $(docker inspect --format='{{.LogPath}}' $(docker ps -qa)) | sort -h</nowiki> | ||
| + | <nowiki>sudo du -ch $(docker inspect --format='{{.LogPath}}' $(docker ps -qa)) | sort -h | sed 's/\/var\/lib\/docker\/containers\///' | awk '{if ($1 != "total") {split($NF, arr, "/"); id = arr[1]; print $1 " " $2 " " id} else {print $1 " " $2 " " $1}}' | while read size unit id; do if [ "$size" != "total" ]; then name=$(docker ps --format "{{.Names}}" --filter id=$id); echo "$size $unit $name"; else echo "$size $unit $id"; fi; done</nowiki> | ||
| + | Mazání jednotlivých věcí | ||
| + | docker container prune - Smaže všechny zastavený kontejnéry | ||
| + | docker image prune - Smaže nepoužíváné images, který nemají tag | ||
| + | docker image prune -a - Smaže všechny nepoužívané images, který nemají kontejner | ||
| + | docker volume prune - Smaže nepoužívané volume | ||
| + | docker builder prune - Vymaže build cache Removes unused build cache. | ||
| + | docker system prune - Vymaže vše zmíněné (stopped containers, unused networks, dangling images, build cache) | ||
Aktuální verze z 21. 7. 2025, 14:41
Obsah
Instalace
Nastavení depositáře
sudo apt update sudo 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 sudo apt update
Instalace
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Vytvoření self-signed certifikátu
Doporučuji si nachystat prostředí
mkdir /etc/ssl/certs/docker chmod -v 0444 /etc/ssl/certs/docker cd /etc/ssl/certs/docker
Vytváření server certifikát na 10 let (Měnit proměný který obsahují $)
openssl genrsa -aes256 -out ca-key.pem 4096 openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem openssl genrsa -out server-key.pem 4096 openssl req -subj "/CN=$LOCALHOST_DOMAIN" -sha256 -new -key server-key.pem -out server.csr echo subjectAltName = DNS:$LOCALHOST_DOMAIN,DNS:$HOST_DOMAIN,IP:127.0.0.1 >> extfile.cnf echo extendedKeyUsage = serverAuth >> extfile.cnf openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
Vytváření client certifikát na 10 let
openssl genrsa -out key.pem 4096 openssl req -subj '/CN=client' -new -key key.pem -out client.csr echo extendedKeyUsage = clientAuth > extfile-client.cnf openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf
Změna práv pro certifikáty a pročištění
chmod -v 0400 ca-key.pem key.pem server-key.pem chmod -v 0444 ca.pem server-cert.pem cert.pem rm -v client.csr server.csr extfile.cnf extfile-client.cnf
- https://medium.com/trabe/using-docker-engine-api-securely-584e0882158e
- https://docs.docker.com/engine/security/protect-access/
Otevření socketu ven
Override config
sudo mkdir /etc/systemd/system/docker.service.d nano /etc/systemd/system/docker.service.d/override.conf
Nastavení pro nešifrovaný otevření socketu, nedoporučeno
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// -H tcp://IP_ADRESA:2735 --ipv6=false --tls=false
Nastavení pro šifrovaný otevření socketu, doporučeno
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// -H tcp:///IP_ADRESA:2376 --ipv6=false --tlsverify --tlscacert=/CESTA/ca.pem --tlscert=/CESTA/server-cert.pem --tlskey=/CESTA/server-key.pem
- https://docs.docker.com/config/daemon/remote-access/
- https://stackoverflow.com/questions/57996938/could-not-edit-systemd-service-file
Restartování
sudo systemctl daemon-reload sudo systemctl restart docker.service
Povolení ufw
ufw allow 2375/tcp
nebo
ufw allow 2376/tcp
Číštění
Zjištění kolik a co zabírá místo na disku
docker system df docker system df --verbose
Zjištění kolik místa zabírají logy
sudo du -ch $(docker inspect --format='{{.LogPath}}' $(docker ps -qa)) | sort -h
sudo du -ch $(docker inspect --format='{{.LogPath}}' $(docker ps -qa)) | sort -h | sed 's/\/var\/lib\/docker\/containers\///' | awk '{if ($1 != "total") {split($NF, arr, "/"); id = arr[1]; print $1 " " $2 " " id} else {print $1 " " $2 " " $1}}' | while read size unit id; do if [ "$size" != "total" ]; then name=$(docker ps --format "{{.Names}}" --filter id=$id); echo "$size $unit $name"; else echo "$size $unit $id"; fi; done
Mazání jednotlivých věcí
docker container prune - Smaže všechny zastavený kontejnéry docker image prune - Smaže nepoužíváné images, který nemají tag docker image prune -a - Smaže všechny nepoužívané images, který nemají kontejner docker volume prune - Smaže nepoužívané volume docker builder prune - Vymaže build cache Removes unused build cache. docker system prune - Vymaže vše zmíněné (stopped containers, unused networks, dangling images, build cache)