Источники:
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
Создаем новую директорию, например 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 и копируем туда некоторые файлы" раздела "Операции на сервере".
Нужно в добавить параметр
tlsverify: true
вsudo vim /etc/docker/daemon.json
что-бы работала авторизация, иначе любой может получить доступ к
docker tls