我无法直接从他的 ip 访问 docker 容器
I can't access to docker container directly from his ip
所以这是我的问题:
- 我有一台装有 debian 10 的服务器 运行s docker
- 在 docker 个容器中 i 运行 pihole
- 当我运行pihole容器时,docker设置他的ip为
172.17.0.2
- Docker 自己创建了一个网络接口叫:
docker0
他的ip是172.17.0.1
问题出在服务器外部,当我 ping 到 docker 接口 172.17.0.1
时没问题,但是当我 ping 到 docker 容器时 172.17.0.2
它没有可达。
这里是ip a
命令输出
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether ac:16:2d:12:30:71 brd ff:ff:ff:ff:ff:ff
inet 10.42.0.247/24 brd 10.42.0.255 scope global dynamic eno1
valid_lft 3152sec preferred_lft 3152sec
inet6 fe80::ae16:2dff:fe12:3071/64 scope link
valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether d0:37:45:80:81:0f brd ff:ff:ff:ff:ff:ff
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:55:80:15:34 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:55ff:fe80:1534/64 scope link
valid_lft forever preferred_lft forever
25: vethedcefcc@if24: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether e2:02:56:8f:9b:22 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::e002:56ff:fe8f:9b22/64 scope link
valid_lft forever preferred_lft forever
我需要做什么?我必须配置什么?
感谢:
~詹姆斯·菲尼克斯
您无法直接从主机访问容器 IP。
如果您想从外部访问服务,您需要forward (publish) service ports
示例:
docker主机IP→192.168.0.111
容器 IP → 172.17.0.111
运行 nginx
容器并发布 8080
端口以从外部连接:
docker run --name some-nginx -d -p 8080:80 some-content-nginx
这里8080
是外部端口(可以从外面访问)
并且 80
是内部端口(可从同一网络中的容器组访问)
访问nginx
:
curl http://localhost:8080
# or
curl http://192.168.0.111:8080
所以这是我的问题:
- 我有一台装有 debian 10 的服务器 运行s docker
- 在 docker 个容器中 i 运行 pihole
- 当我运行pihole容器时,docker设置他的ip为
172.17.0.2
- Docker 自己创建了一个网络接口叫:
docker0
他的ip是172.17.0.1
问题出在服务器外部,当我 ping 到 docker 接口 172.17.0.1
时没问题,但是当我 ping 到 docker 容器时 172.17.0.2
它没有可达。
这里是ip a
命令输出
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether ac:16:2d:12:30:71 brd ff:ff:ff:ff:ff:ff
inet 10.42.0.247/24 brd 10.42.0.255 scope global dynamic eno1
valid_lft 3152sec preferred_lft 3152sec
inet6 fe80::ae16:2dff:fe12:3071/64 scope link
valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether d0:37:45:80:81:0f brd ff:ff:ff:ff:ff:ff
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:55:80:15:34 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:55ff:fe80:1534/64 scope link
valid_lft forever preferred_lft forever
25: vethedcefcc@if24: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether e2:02:56:8f:9b:22 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::e002:56ff:fe8f:9b22/64 scope link
valid_lft forever preferred_lft forever
我需要做什么?我必须配置什么?
感谢:
~詹姆斯·菲尼克斯
您无法直接从主机访问容器 IP。
如果您想从外部访问服务,您需要forward (publish) service ports
示例:
docker主机IP→192.168.0.111
容器 IP → 172.17.0.111
运行 nginx
容器并发布 8080
端口以从外部连接:
docker run --name some-nginx -d -p 8080:80 some-content-nginx
这里8080
是外部端口(可以从外面访问)
并且 80
是内部端口(可从同一网络中的容器组访问)
访问nginx
:
curl http://localhost:8080
# or
curl http://192.168.0.111:8080