Pokud chcete používat Docker vzdáleně (ovládat jej z jiného hostu, je téměř nutností zapnout TLS ověřování. Jak to nasadit si ukážeme zde.

Generování certifikátů

Nejdříve si vygenerujeme SSL certifikáty nástrojem minica. Předpokládejme že náš Docker běží na serveru kam je nacílena doména docker.sikademo.com.

Pokud nemáte minica můžete jej nainstalovat pomocí brew install minica

minica --domains docker.sikademo.com
scp minica.pem root@docker.sikademo.com:/etc/docker/ca.pem
scp docker.sikademo.com/cert.pem root@docker.sikademo.com:/etc/docker/cert.pem
scp docker.sikademo.com/key.pem root@docker.sikademo.com:/etc/docker/key.pem

Spuštění Dockeru s TLS parametry

Je potřeba spustit Docker s těmito parametry --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/cert.pem --tlskey=/etc/docker/key.pem -H=0.0.0.0:2376. V systemd nastavte tyto parametry ke spouštění Dockeru.

dockerd \
  --tlsverify \
  --tlscacert=/etc/docker/ca.pem \
  --tlscert=/etc/docker/cert.pem \
  --tlskey=/etc/docker/key.pem \
  -H=0.0.0.0:2376

Konfigurační soubor Dockeru v systemd zjistitite tímto příkazem:

systemctl status docker.service

Vypíše to něco jako:

systemctl status docker.service

Pak otevřete soubor /lib/systemd/system/docker.service a přidáte TLS parametry. Poté reloadnete konfiguraci a restartujete Docker.

vim /lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker

Připojení ke vzdálenému Dockeru

Zkopírujeme si certifikáty do složky ~/.docker/docker.sikademo.com:

mkdir ~/.docker/docker.sikademo.com
cp minica.pem ~/.docker/docker.sikademo.com/ca.pem
cp docker.sikademo.com/cert.pem ~/.docker/docker.sikademo.com/cert.pem
cp docker.sikademo.com/key.pem ~/.docker/docker.sikademo.com/key.pem

Pro připojení vzdáleného Dockeru můžete použít buď parametry příkazu docker nebo environment variables.

docker \
  --tlsverify \
  --tlscacert=~/.docker/docker.sikademo.com/ca.pem \
  --tlscert=~/.docker/docker.sikademo.com/cert.pem \
  --tlskey=~/.docker/docker.sikademo.com/key.pem \
  -H=tcp://docker.sikademo.com:2376 \
  version

nebo pomocí proměnných

export DOCKER_HOST=tcp://docker.sikademo.com:2376
export DOCKER_CERT_PATH=~/.docker/docker.sikademo.com
export DOCKER_TLS_VERIFY=1
docker version

Ondřej Šika

Jsem freelance DevOps konzultant a lektor. Zlepšuji práci vývojářských týmu zaváděním efektivních procesů ve vývoji. Naučím Vás používat prověřené nástroje a technologie, které povedou k rychlejšímu vývoji a bezpečnějšímu provozu vašeho software.