Правильный способ запуска 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

и это сработало.