Как определить порт демона докеров

Я установил Ubuntu и Docker. Я пытаюсь запустить контейнер Raik:

$ DOCKER_RIAK_AUTOMATIC_CLUSTERING=1 DOCKER_RAIK_CLUSTER_SIZE=5 DOCKER_RIAK_BACKEND=leveldb make start-cluster ./bin/start

и получите сообщение об ошибке:

Похоже, что переменная окружения DOCKER_HOST не была установлена. Кластер Riak не может быть запущен, если это не было установлено соответствующим образом. Например:

export DOCKER_HOST = "tcp://127.0.0.1: 2375"

Если я установил

export DOCKER_HOST="tcp://127.0.0.1:2375"

все мои другие контейнеры перестают работать и говорят, что не могут найти демон Docker.

Похоже, что мой докер-докер использует другой порт 2375 тана. Как я могу проверить это?

Ответ 1

По умолчанию демон docker будет использовать unix-сокет unix:///var/run/docker.sock (вы можете проверить это для вас, выполнив sudo netstat -tunlp и обратите внимание, что нет процесса sudo netstat -tunlp прослушивание любых портов). Он рекомендовал сохранить этот параметр по соображениям безопасности, но, похоже, Riak требует, чтобы демон запускался в сокет TCP.

Чтобы запустить демон docker с помощью сокета TCP, с которым можно подключиться, используйте параметр -H:

sudo docker -H 0.0.0.0:2375 -d &

Предупреждение. Это означает, что машины, которые могут разговаривать с демоном через этот TCP-сокет, могут получить доступ root к вашей главной машине.

Связанные документы:

http://basho.com/riak-quick-start-with-docker/

https://docs.docker.com/articles/basics/

Ответ 2

создать один файл в /etc/systemd/system/docker.service.d/docker.conf

внутри docker.conf вставить содержимое ниже

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Обратите внимание: если нет такой директории, как docker.service.d и файл docker.conf то создайте ее.

после сохранения этого файла перезагрузить конфигурацию systemctl daemon-reload и перезапустить systemctl restart docker.service

после перезапуска вы можете увидеть порт в systemctl status docker.service как /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Надеюсь, это поможет

Спасибо!

Ответ 3

Существует два способа настройки порта демона докеров

1) Конфигурирование в файле /etc/default/docker:

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"

2) Настройка на /etc/docker/daemon.json:

{
"debug": true,
"hosts": ["tcp://127.0.0.1:5000", "unix:///var/run/docker.sock"]
}

Если доклер по умолчанию не настроен, Docker будет ждать бесконечного периода.

Waiting for /var/run/docker.sock
Waiting for /var/run/docker.sock
Waiting for /var/run/docker.sock
Waiting for /var/run/docker.sock
Waiting for /var/run/docker.sock

ПРИМЕЧАНИЕ: НО НЕ МОЖЕТЕ КОНФИГУРИРОВАТЬ В ОБОИХ ФАЙЛАХ КОНФИГУРАЦИИ, может произойти следующая ошибка:

Waiting for /var/run/docker.sock
unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: hosts: (from flag: [tcp://127.0.0.1:5000 unix:///var/run/docker.sock], from file: tcp://127.0.0.1:5000)

Причиной добавления как пользовательского порта [tcp://127.0.0.1: 5000], так и стандартного док-станции [unix:///var/run/docker.sock] является то, что пользовательский порт разрешает доступ к API-интерфейсам докеров, тогда как сокет по умолчанию включает CLI. Если порт по умолчанию [unix:///var/run/docker.sock] не указан в файле /etc/default/docker, может произойти следующая ошибка:

# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Эта ошибка не связана с тем, что докер не работает, но из-за неактивного сокета по умолчанию не включен.

После включения конфигурации перезапустите службу докеров и убедитесь, что порт докера включен или нет:

# netstat -tunlp | grep -i 5000
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      31661/dockerd 

Применимо для версии Docker версии 17.04, может отличаться в разных версиях докеров.

Ответ 4

Попробуйте: -H tcp://0.0.0.0: 2375 Вместо -H 0.0.0.0:2375