Прослушиватель Docker при запуске мостового интерфейса

Мне нужно добавить прослушиватель Docker в мостовой интерфейс Docker, но он работает, только если докер уже запущен. И демон не запускается после загрузки системы, если я добавляю ip в daemon.json. Есть ли способ заставить его работать?

Мой демон.json:

   {   
        "data-root":  "/data/workspace/environment/docker",   
        "debug": true,   
        "tls": true,   
        "tlscacert": "/env-vol/docker-daemon/ca.pem",   
        "tlscert": "/env-vol/docker-daemon/server-cert.pem",   
        "tlskey": "/env-vol/docker-daemon/server-key.pem",   
        "tlsverify": true,   
        "storage-driver": "overlay",   
        "hosts": [
            "unix:///var/run/docker.sock", 
            "tcp://127.0.0.1:2375", 
            "tcp://10.20.30.1:2375"
        ] 
    }

10.20.30.1 — IP-адрес мостового сетевого интерфейса Docker.

Обновление: прослушиватель должен быть привязан только к сокету, локальному хосту и мостовому интерфейсу Docker. И не должен быть привязан к физическому интерфейсу.


person Sergey Bezugliy    schedule 06.07.2018    source источник
comment
Вы действительно хотите открыть незашифрованный неограниченный корневой доступ к вашему хосту без авторизации? Держу пари, что нет. Я бы удалил обе строки tcp:.   -  person David Maze    schedule 07.07.2018
comment
Он не откроет неограниченный доступ, потому что 127.0.0.1 — это локальный хост, а 10.20.30.0/24 — это внутренняя виртуальная сеть с мостом для контейнеров, она не подключена к миру, что-то вроде DMZ, но мне нужен доступ к службе докеров, используя tcp внутри. Доступ к контейнерам предоставляется через другую сеть, взаимодействующую с обратным прокси nginx, где я добавил потоки tcp для подключения к нужным портам, поэтому мне не нужно даже публиковать порты докера и я могу полностью изолировать докер от внешнего мира.   -  person Sergey Bezugliy    schedule 07.07.2018
comment
Часть схемы была описана в моем другом вопросе: stackoverflow.com/questions/51126509/   -  person Sergey Bezugliy    schedule 07.07.2018
comment
Если вам действительно нужен отдельный контейнер для доступа к сокету Docker и неограниченный корневой доступ к хосту, обычный способ — опубликовать сокет Unix в контейнере с помощью docker run -v /var/run/docker.sock:/var/run/docker.sock. Я бы крайне не решался давать такой уровень мощности каждому контейнеру и каждому процессу на хосте.   -  person David Maze    schedule 07.07.2018
comment
Да. Я знаю и использую его, например, в Portainer. Пытался использовать только tcp-соединение, потому что, когда я пытаюсь развернуть контейнеры в качестве сервисов роя, мой сокет рушится, иногда на этапе запуска, иногда, когда я пытаюсь взаимодействовать с одним из сервисов.   -  person Sergey Bezugliy    schedule 07.07.2018
comment
Точно, мне нужно, чтобы использовать докеризованные бегуны Gitlab. Теперь это работает хорошо, но не внутри роя.   -  person Sergey Bezugliy    schedule 07.07.2018