Невозможно получить доступ к контейнеру docker с хоста docker - PullRequest
0 голосов
/ 07 апреля 2020

Ситуация

Я использую хост-сервер на базе Debian docker с контейнерами docker. Контейнеры настроены с использованием определенной сети docker и им назначен IP-адрес stati c. Я хочу получить доступ к каждому контейнеру по своему IP-адресу. Сеть настроена на совместное использование диапазона IP-адресов хостов.

Network:      192.168.178.0/24
Host IP:      192.168.178.100
Router IP:    192.168.178.1
Container IP: 192.168.178.140

Сеть docker была создана:

docker network create -d macvlan --subnet=192.168.178.0/24 --gateway=192.168.178.1 -o parent=eno0 dockernet

Контейнеры используют одну и ту же сеть docker и конфигурируются с использованием docker -compose:

 gitlab:
    image: gitlab/gitlab-ce
    restart: always
    networks:
        dockernet:
            ipv4_address: 192.168.178.140
    dns:
        - 192.168.178.102
        - 8.8.8.8
        - 4.4.4.4
    ports:
        - 80:80
        - 443:443
        - 22:22

Проблема

Теперь с любого компьютера в той же сети я могу пропинговать контейнер docker, но не с самого хоста. Я думал, что это может быть проблема с брандмауэром, но не смог подтвердить (удалив все правила брандмауэра).

Текущая конфигурация таблиц IP:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  anywhere             anywhere            
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere 

Также проверил Debian hosts.deny - он пуст.

Выполнить ping на docker хост-машине:

$ping 192.168.178.140
PING 192.168.178.140 (192.168.178.140) 56(84) bytes of data.
From 192.168.178.100 icmp_seq=1 Destination Host Unreachable

Выполнить пинг с любого другого компьютера:

$ping 192.168.178.140
PING 192.168.178.140 (192.168.178.140): 56 data bytes
64 bytes from 192.168.178.140: icmp_seq=0 ttl=64 time=2.189 ms
64 bytes from 192.168.178.140: icmp_seq=1 ttl=64 time=1.965 ms

Вопросы:

  1. Любая идея относительно брандмауэра rules, et c.?
  2. Любая другая идея о том, как настроить docker сеть, чтобы иметь stati c IP для контейнеров?
  3. Любая другая мысль по этому поводу, почему я не могу получить доступ к моим docker контейнерам с хоста docker?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...