簡體   English   中英

我無法直接從他的 ip 訪問 docker 容器

[英]I can't access to docker container directly from his ip

所以這是我的問題:

  1. 我有一台運行 docker 的 debian 10 服務器
  2. 在 docker 容器中,我運行 pihole
  3. 當我運行 pihole 容器時,docker 將他的 ip 設置為172.17.0.2
  4. 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。

如果要從外部訪問服務,則需要轉發(發布)服務端口

例子:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM