© 2021 WebHive

Настройка удалённого соединения с Docker

После очередного обновления docker-а столкнулся с неприятной ситуацией когда попытка подключиться к docker-у удалённо приводила просто к зависанию клиента.

Итак изначально docker ставился в CentOS 7 по умолчанию, никаких особых настроек не было сделано и всё работало. Но в связи с возникшей проблемой пришлось таки разбираться как же скормить ему опции для запуска.

В CentOS начиная с версии 7 запуск демонов производится через systemd. Соответственно вся настройка должна выполняться именно через unit файлы systemd.

Итак создаём Unit файл для докера:

1
2
$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ touch /etc/systemd/system/docker.service.d/docker.conf

В созданный файл записываем следующее содержимое:

1
2
3
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H unix:///var/run/docker.sock

Пустой ExecStart= обязателен — он как бы говорит нам не использовать значение ExecStart системного unit-файла. А уже повторный вызов устанавливает новое значение.

  • -H fd:// позволяет systemd общаться с docker -ом, без этого невозможно удалённое подключение
  • -H unix:///var/run/docker.sock позволяет подключаться к докеру его собственным процессам, без этого не могут стартовать процессы докера

В дефолтном unit-файле докера запуск dockerd производится без параметров и видимо настройки по умолчанию не создают сокет для systemd (-H fd://).

Источники

Комментарии