Docker Remote
ВНИМАНИЕ! Статья актуальна на 2018 год.
Управление докером на удаленной машине
Источники: https://docs.docker.com/engine/admin/#configure-the-docker-daemon https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option https://docs.docker.com/engine/security/https/#secure-by-default https://github.com/moby/moby/issues/25471
Операции на удаленной машине
Создаем новую директорию, например certs, и переходим в нее
mkdir ~/certs
cd ~/certs
Выполняем инструкцию https://docs.docker.com/engine/security/https/
В результате должно получиться нечто похожее на это:
~/certs$ ll
total 40
drwxr-xr-x 2 misuz misuz 4096 авг 14 20:14 ./
drwxr-xr-x 10 misuz misuz 4096 авг 14 20:46 ../
-r-------- 1 misuz misuz 3326 авг 14 20:01 ca-key.pem
-r--r--r-- 1 misuz misuz 1972 авг 14 20:04 ca.pem
-rw-r--r-- 1 misuz misuz 17 авг 14 20:13 ca.srl
-r--r--r-- 1 misuz misuz 1797 авг 14 20:13 cert.pem
-rw-r--r-- 1 misuz misuz 30 авг 14 20:13 extfile.cnf
-r-------- 1 misuz misuz 3243 авг 14 20:12 key.pem
-r--r--r-- 1 misuz misuz 1818 авг 14 20:11 server-cert.pem
-r-------- 1 misuz misuz 3247 авг 14 20:09 server-key.pem
misuz@misuz:~/certs$
Создаем директорию /var/docker и копируем туда некоторые файлы
sudo mkdir /var/docker
sudo cp ca.pem server-cert.pem server-key.pem /var/docker
ls /var/docker
ca.pem server-cert.pem server-key.pem
Останавливаем докер-демон
sudo service docker stop
Изменяем конфигурацию по-умолчанию докер-демона
sudo mkdir /etc/systemd/system/docker.service.d/
sudo vim /etc/systemd/system/docker.service.d/override.conf
# /etc/systemd/system/docker.service.d/hosts.conf
# /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
Перезапускаем systemd-демон
sudo systemctl daemon-reload
sudo systemctl restart docker.service
Создаем (корректируем) файл конфигурации докер-демона
sudo vim /etc/docker/daemon.json
{
"debug": true,
"tls": true,
"tlscacert": "/var/docker/ca.pem",
"tlscert": "/var/docker/server-cert.pem",
"tlskey": "/var/docker/server-key.pem",
"hosts": ["fd://", "tcp://0.0.0.0:2376"]
}
Запускаем докер-демон
sudo service docker start
sudo service docker status
# ---
sudo systemctl daemon-reload
sudo systemctl restart docker.service
systemctl cat docker | grep Exec
# --- журналы
systemctl status docker.service
journalctl -xe
Операции на локальной машине
Создаем директорию .docker в домашней директории пользователя
Копируем файлы из директории certs в директорию ~/.docker ca.pemсert.pemkey.pem
Получаем доступ к удаленному докеру
DOCKER_HOST=tcp://misuz.ru:2376 DOCKER_TLS_VERIFY=1 docker ps
DOCKER_HOST=tcp://misuz.ru:2376 DOCKER_TLS_VERIFY=1 docker-compose --file docker-compose.yml pcs ps
Операции на очередной удаленной машине
Если есть необходимость управлять докерами на разных удаленных машинах, то на второй и последующей машинах требуется выполнить ограниченый перечень операций
Создаем новую директорию, например certs, и переходим в нее
mkdir ~/certs
cd ~/certs
Копируем в эту директорию файлы ca-key.pem и ca.pem
Выполняем инструкцию https://docs.docker.com/engine/security/https/ в части создания файлов server-key.pem и server-cert.pem. Клиентские файлы создавать не надо.
Далее выполняем все операции, начиная с позиции "Создаем директорию /var/docker и копируем туда некоторые файлы" раздела "Операции на удаленной машине".
Обобщенный алгоритм
1) ca-key.pem 2) ca-key.pem -> ca.pem
--- серверная часть --- 3) server-key.pem 4) server-key.pem -> server.csr 5) server.csr + ca.pem + ca-key.pem -> server-cert.pem
--- клиентская часть --- 6) key.pem 7) key.pem -> client.csr 8) client.csr + ca.pem + ca-key.pem -> cert.pem
Written with StackEdit.