Я использую portainer и не могу управлять удаленными конечными точками. Я попытался использовать командную строку для подключения к удаленным док-узлам, но получил сообщение Cannot connect to the Docker daemon at tcp://<remote_ip>:<port>. Is the docker daemon running?
.
Да, они бегут. Я добавил себя в группу Docker и могу получить доступ к Docker по SSHing в узлы. Однако я не могу получить доступ к каким-либо док-узлам удаленно.
Я изменил, /etc/default
чтобы добавить / раскомментироватьDOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
Я тоже модифицировал /etc/init.d/docker
и /etc/init/docker.conf
включил DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
.
Я перезапустил службу Docker, несколько раз вышел из системы и вошел в нее, но все равно не могу подключиться к удаленному узлу. Я даже не могу подключиться к локальному узлу, передав IP.
Что я пропустил? Какая конфигурация в каком файле предоставляет API через TCP?
user@hostname:~$ docker -H tcp://<REMOTE_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<REMOTE_IP>:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://127.0.0.1:2375 info
Cannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://<LOCAL_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<LOCAL_IP>:2375. Is the docker daemon running?
user@hostname:~$
Изменить:
Запуск ps aux | grep -i docker
возвращает это -
root 3581 0.1 0.2 596800 41540 ? Ssl 04:17 0:35 /usr/bin/dockerd -H fd://
root 3588 0.0 0.0 653576 14492 ? Ssl 04:17 0:18 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
ss -ntl
ps aux
в свой ответ, если это поможет.Ответы:
Я нашел решение благодаря посту Ивана Крижсана .
Мне пришлось редактировать
/lib/systemd/system/docker.service
в моей системе Ubuntu 16.04.2 LTS, чтобы изменить строкутогда
и все заработало :-). Следующий шаг - выяснить, как защитить захваченную форму демона Docker.
источник
systemctl edit docker.service
и systemctl создадут новый файл с вашими правками. Это предотвращает стирание ваших изменений обновлением. SystemD объединит два файла во время выполнения. Хороший документ здесь: digitalocean.com/community/tutorials/...ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:4243
-H tcp://
настройку самостоятельно, без-H fd://
настройки я не могу выдавать и клиентские команды, например .., информация о докере, версия докера и т. д.В каталоге / etc / default хранители дистрибутива размещают свои файлы конфигурации. Если вы устанавливаете Docker непосредственно из репозиториев Docker, этот каталог не будет использоваться.
В каталоге / lib / systemd пакеты устанавливают свои файлы systemd и при обновлении перезаписывают любые изменения. Если вы используете это, ваши изменения будут потеряны.
Чтобы внести свои собственные изменения в файл модуля systemd, который сохраняется, вы можете создать файл модуля в /etc/systemd/system/docker.service.d/, например, вот мой стандартный файл /etc/systemd/system/docker.service. д / override.conf:
Это переопределение просто отменяет все флаги командной строки для демона dockerd из systemd. После этого вы можете переопределить каждый параметр из /etc/docker/daemon.json, который используется Docker и, в зависимости от параметра, может быть перезагружен без перезапуска демона. Например, вот пример /etc/docker/daemon.json:
Для ваших целей вам нужна только строка для установки хостов.
Одна чрезвычайно важная часть вышеупомянутого конфигурационного файла - настройки TLS. Если вы не настраиваете взаимный TLS между клиентом и сервером и открываете Docker для прослушивания в сети, вы запускаете эквивалент открытого сервера Telnet с разрешенными учетными записями root без пароля. Если вы предпочитаете ssh, а не telnet, или если вы предпочитаете иметь пароль для своей учетной записи root, вы должны настроить TLS. Порты док-станции API часто сканируются в Интернете, и вы вскоре найдете вредоносное ПО, установленное на вашем хосте, если пропустите этот шаг настройки.
Подробные сведения о настройке ключей TLS для клиента и сервера можно найти по адресу: https://docs.docker.com/engine/security/https/.
источник
Если вы не хотите переконфигурировать и перезапустить ваш демон docker, вы можете просто соединить сокет unix с сокетом TCP, используя
ncat
(изnmap
пакета):В качестве альтернативы вы можете использовать socat или другие инструменты .
источник
nohup
и&
Существует официальная документация, описывающая, как настроить, где демон Docker прослушивает соединения .
Настройка удаленного доступа с файлом systemd unit
Используйте команду sudo systemctl edit docker.service, чтобы открыть файл переопределения для docker.service в текстовом редакторе.
Добавьте или измените следующие строки, подставив свои собственные значения.
Сохраните файл.
Перезагрузите конфигурацию systemctl.
Перезапустите Docker.
Проверьте, было ли внесено изменение, просмотрев вывод команды netstat, чтобы убедиться, что dockerd прослушивает настроенный порт.
Настройка удаленного доступа с
daemon.json
Установите массив hosts в /etc/docker/daemon.json для подключения к сокету UNIX и IP-адресу следующим образом:
Перезапустите Docker.
Проверьте, было ли внесено изменение, просмотрев вывод команды netstat, чтобы убедиться, что dockerd прослушивает настроенный порт.
Клиент Docker учитывает
DOCKER_HOST
переменную среды, чтобы установить-H
флаг для клиента. Используйте одну из следующих команд:или
источник