Как определить порт демона докеров
Я установил 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