Docker je platforma pro vývoj, nasazení a provozování aplikací v kontejnerech. Kontejnery umožňují balení aplikace a všech jejích závislostí do jednotného balíčku, který lze snadno přenášet mezi různými prostředími a spouštět na různých systémech bez ohledu na jejich konfiguraci.

Příprava instalace

sudo apt-get install ca-certificates curl gnupg lsb-release

Vytvoříme složku a stáhneme klíče

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

Přidáme repositář do souboru source.list

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Aktualizujeme a nainstalujeme aplikaci

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Otestování aplikace

sudo docker run hello-world

Výstup:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

Základní příkazy

Výpis kontejnerů, které jsou spuštěny

docker ps

Výpis všech stažených obrazů (docker images)

sudo docker images

První výstup:

REPOSITORY    TAG       IMAGE ID       CREATED         SIZEhello-world   latest    feb5d9fea6a5   16 months ago   13.3kB

Hledání dostupného kontejneru podle názvu

docker search název_kontejneru

Spuštění, restart a zastavení kontejneru

docker start id|název kontejneru
docker stop  id|název kontejneru
docker restart id|název kontejneru

Automatické spuštění a zrušení při startu počítače

docker update --restart=yes id kontejneru
docker update --restart=no id kontejneru

Výpis logu kontejneru

docker logs -f <id_kontejneru>

Připojení na konzoli běžícího kontejneru

docker exec -it <id_kontejneru> /bin/bash

Alternativně

docker exec -it <id_kontejneru> /bin/sh --login

Odstranění kontejneru provedeme příkazem

docker rm id kontejneru

Odstranění image

docker image rm id image

Přejmenování image (z Portainer-ce na Container-ce)

docker tag portainer/portainer-ce:latest container-ce

Export/import

Uložení image do souboru

docker save -o image.tar <název_image>

Nahrání image ze souboru

docker load -i image.tar

Oprava KVM bridge

[Service]
ExecStartPre=/etc/alternatives/iptables -A FORWARD -p all -i br0 -j ACCEPT
...

Vzdálená správa

Přidejte nebo upravte řádek ExecStart

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
...
+