====== Docker Engine Linux ======
===== Installation =====
==== Per Script ====
:!: Always check scripts before running them!
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt purge docker docker-engine docker.io containerd runc
sudo apt autoremove
curl -sSL https://get.docker.com | sh
==== Manuell ====
:!: Tested with Debian 11:
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt purge docker docker-engine docker.io containerd runc
sudo apt autoremove
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
# add dockers gpg key
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# detect arch and add docker repo
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
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker version && echo && echo && sudo docker compose version
if gpg error:
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt update
:!: Tested with Debian 12:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt update
sudo apt install ca-certificates curl
# add dockers gpg key
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# detect arch and add docker repo
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker version && echo && echo && sudo docker compose version
=== Optional ===
User zu Docker-Gruppe hinzufügen
usermod -aG docker username
=== Rasperry Pi 1 ===
:!: Tested with Raspbian 11
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
# add dockers gpg key
sudo mkdir -m 0755 -p /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 docker armhf raspbian bullseye stable repo
sudo echo "deb [arch=armhf signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian bullseye stable" > /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin
sudo docker version
''docker version''
Client: Docker Engine - Community
Version: 23.0.2
API version: 1.42
Go version: go1.19.7
Git commit: 569dd73
Built: Mon Mar 27 16:16:08 2023
OS/Arch: linux/arm
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.2
API version: 1.42 (minimum version 1.12)
Go version: go1.19.7
Git commit: 219f21b
Built: Mon Mar 27 16:16:08 2023
OS/Arch: linux/arm
Experimental: false
containerd:
Version: 1.6.20
GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
runc:
Version: 1.1.5
GitCommit: v1.1.5-0-gf19387a
docker-init:
Version: 0.19.0
GitCommit: de40ad0
===== Konfiguration =====
==== IPv6 ====
''/etc/docker/daemon.json'' erstellen bearbeiten:
{
"ipv6": true,
"ip6tables": true,
"experimental": true,
"fixed-cidr-v6": "fd66:73e8:7225:543b::/64"
}
==== Rootless mode ====
https://docs.docker.com/engine/security/rootless/
===== Befehle =====
docker start
docker stop
docker rm
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker cp :/path/to/file /host/path/to/file
docker ps
docker container ls -a
docker network ls
docker network inspect
docker network rm
docker exec -it /bin/bash
docker exec -it /bin/sh #alpine based images
docker pull
docker load -i
docker images
docker image rm
docker stats ()
docker logs
docker system prune
docker system prune -a #all, not just dangling
docker system prune -f #force
docker system prune -a -f
docker system prune --volumes
/var/lib/docker/volumes/ #docker volumes
https://docs.docker.com/engine/reference/commandline/docker/
==== Format Stats ====
# sort by memory usage
docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}" | sort -k 4 -h -r
https://docs.docker.com/engine/reference/commandline/stats/#format
===== Swarm =====
docker swarm init --advertise-addr 10.1.1.1
docker node ls
docker node rm node02
docker swarm leave
===== Logs =====
==== Docker Service ====
sudo journalctl -fu docker.service #systemd
==== Docker Containers =====
sudo docker logs auth 2>&1 | grep "unexpected"