Skip to content

Instantly share code, notes, and snippets.

@nmix
Last active August 22, 2023 18:45
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save nmix/be7782814ad6753e6f1d54d2299b93a0 to your computer and use it in GitHub Desktop.
Save nmix/be7782814ad6753e6f1d54d2299b93a0 to your computer and use it in GitHub Desktop.
Управление докером на удаленной машине

Управление докером на удаленной машине

Источники:

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

moby/moby#25471

Операции на сервере

Создаем новую директорию, например certs, и переходим в нее

mkdir ~/certs
cd ~/certs

Выполняем инструкцию https://docs.docker.com/engine/security/https/

В результате должно получиться нечто похожее на это:

~/certs$ ll
total 40
drwxr-xr-x  2 user user 4096 авг 14 20:14 ./
drwxr-xr-x 10 user user 4096 авг 14 20:46 ../
-r--------  1 user user 3326 авг 14 20:01 ca-key.pem
-r--r--r--  1 user user 1972 авг 14 20:04 ca.pem
-rw-r--r--  1 user user   17 авг 14 20:13 ca.srl
-r--r--r--  1 user user 1797 авг 14 20:13 cert.pem
-rw-r--r--  1 user user   30 авг 14 20:13 extfile.cnf
-r--------  1 user user 3243 авг 14 20:12 key.pem
-r--r--r--  1 user user 1818 авг 14 20:11 server-cert.pem
-r--------  1 user user 3247 авг 14 20:09 server-key.pem
user@ubuntuserver:~/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/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

Перезапускаем systemd-демон

systemctl daemon-reload

Создаем (корректируем) файл конфигурации докер-демона

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

Операции на клиенте

Создаем директорию .docker в домашней директории пользователя

Копируем файлы из директории certs в директорию ~/.docker ca.pem сert.pem key.pem

Получаем доступ к удаленному докеру

DOCKER_HOST=tcp://EXAMPLE.COM:2376 DOCKER_TLS_VERIFY=1 docker ps
DOCKER_HOST=tcp://EXAMPLE.COM: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 и копируем туда некоторые файлы" раздела "Операции на сервере".

@skar404
Copy link

skar404 commented Sep 16, 2018

Нужно в добавить параметр tlsverify: true в
sudo vim /etc/docker/daemon.json

что-бы работала авторизация, иначе любой может получить доступ к docker tls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment