Правильный способ запуска docker daemon для прослушивания определенного порта
Im новый для docker и хотите запустить его в режиме демона, прослушивая определенный IP-адрес и порт. В документация говорят, что это можно сделать, написав sudo /usr/bin/docker daemon -H 0.0.0.0:5555
. Затем он говорит, что я могу перечислить запущенные контейнеры с помощью этой команды docker ps
. Если я попробую это, я получу следующее сообщение:
Get http:///var/run/docker.sock / v1.20 / контейнеры / json?все=1: наберите unix /var/run/docker.носок: нет такого файла или каталога.
- вы пытаетесь подключиться к демону с поддержкой TLS без TLS?
- работает ли ваш демон docker?
Я не могу взаимодействовать с ним. Я искал решение, но не повезло. Есть предложения?
P. S. Как я могу запустить этот процесс в фоновом режиме? Я попытался добавить&, но я застрял на ouput до нажатия ctrl+c.
спасибо заранее
5 ответов
Я нашел решение моей проблемы. Я указал docker, работающий на IP x и Порту y, но docker тогда слушает только этот сокет. Мне пришлось добавить еще один флаг-H с сокетом unix, чтобы слушать локальные запросы:
sudo /usr/bin/docker daemon -H tcp://0.0.0.0:5555 -H unix:///var/run/docker.sock
на Ubuntu (16.04 LTS) с docker-ce (17.03.1~ce-0~ubuntu-xenial
) сделайте следующее, чтобы docker прослушивал TCP-порт вместо сокетов.
Добавить файл /etc/systemd/system/docker.service.d/override.conf
следующего содержания:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
Добавить файл /etc/docker/daemon.json
следующего содержания
{
"hosts": [
"tcp://127.0.0.1:2375"
]
}
перезагрузка (systemctl daemon-reload
) и перезагрузка (systemctl restart docker.service
) докер.
для справки:https://github.com/moby/moby/issues/25471
EDIT:
будет осторожно, демон будет слушать только этот сетевой порт, игнорируя локальные запросы. Чтобы заставить docker слушать как удаленный, так и локальный, отредактируйте демон.json, но держите стандартный сокет unix
{
"hosts" : [
"unix:///var/run/docker.sock",
"tcp://<docker-host-ip-or-localhost>:2375"
]
}
параметры подключения демона Docker docs
On Mac OSX вы запустите приложение Docker Quickstart Terminal, чтобы увидеть:
Machine default already exists in VirtualBox.
Starting machine default...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
Setting environment variables for machine default...
...
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
теперь
docker ps
должно работать
On Linux например, может потребоваться Ubuntu, добавляющий sudo. Е. Г.
docker ps
приведет к:
Get http:///var/run/docker.sock/v1.20/containers/json: dial unix /var/run/docker.sock: permission denied.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?
но
sudo docker ps
будет работать.
посмотреть https://docs.docker.com/articles/basics/
чтобы проверить, работает ли ваша служба docker, вы можете позвонить
sudo service --status-all 2>&1 | grep docker
и он должен показать:
[ - ] docker
иногда настройки установки может быть поврежден см.: демон Docker не запускается и не перезапускается
этот поток довольно полезен, поэтому я хотел бы внести свой вклад, как заставить это работать на Ubuntu 14.04.1 LTS
с Docker 1.12.6-cs13
(может работа с версиями docker-ce также). The systemd
подход (также /etc/sysconfig/docker
) невозможно для этого Ubuntu vintage, официальная документация docker на момент написания этой статьи не имеет руководства по установке после того, как docker daemon прослушивает сеть с помощью upstart
для Ubuntu 14.04.1 LTS
. Я обнаружил, что ниже подход работает лучше хорошо:
создать /etc/default/docker
файл с содержимым
DOCKER_OPTS = "-H tcp://MACHINE-IP:2375 -H unix:///var/run/docker.sock"
перезапустить службу docker sudo service docker restart
. После этого демон docker начал прослушивать сеть, и журналы демона выглядели чистыми. Возможно, более опытные пользователи docker могут перезвонить, если есть лучший способ.
по какой-то причине решение Феникса давало мне ошибку. Поэтому я нашел альтернативный способ ... --3-->
я отредактировал / etc/sysconfig / docker и изменил параметр OPTIONS
OPTIONS='--selinux-enabled -H=unix:///var/run/docker.sock -H=0.0.0.0:2375'
затем я перезапустил демон docker
systemctl restart docker
и это сработало.