在Windows系統瀏覽器中訪問虛擬機CentOS裏面Docker容器運行nginx服務器

1.在CentOS虛擬機中啓動一個Docker容器

# 創建並運行一個名字爲runoob-nginx-test 的nginx 容器,映射端口號8083->80
[root@localhost ~]# docker run --name runoob-nginx-test -p 8083:80 -d nginx
WARNING: IPv4 forwarding is disabled. Networking will not work.
2fa62135a96a93a575302cbf52e23a5bcc08c1fecc0d16e1176a83a7dc79398c

[root@localhost ~]# docker ps              # 查看運行的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              
2fa62135a96a        nginx               "nginx -g 'daemon of…"   6 seconds ago       Up 5 seconds   
 PORTS                  NAMES    
 0.0.0.0:8083->80/tcp   runoob-nginx-test

     在瀏覽器訪問 127.0.0.1:8081 時,顯示無法訪問。

   原因:

            Docker運行在Linux虛擬機上,在Windows瀏覽器上訪問 127.0.0.1:8081 其實是在訪問Linux虛擬機的地址,而不是Docker容器的地址。比如:Windows系統是A,Linux虛擬機是B,Docker容器是C。

                 其中A訪問B、B訪問C是互通的,A訪問C就需要一個路由來轉發數據包才能訪問。就和網絡之間連接需要路由器進行轉發數據包一樣。如果不在同一個局域網的主機進行通信的話,依靠路由進行數據轉發。並且,沒有去手動設置路由就會發往默認路由,導致兩臺主機無法正常進行通信。

 

   解決:

          在Windows上添加路由, 比如:windows系統IP地址爲 192.168.0.103(在CMD中通過ipconfig查看),Docker IP地址爲172.17.0.1(在Linux終端下通過 ifconfig 查看),虛擬機的IP地址爲 192.168.0.104。很明顯虛擬機和Windows系統在同一個局域網內。

          在搜索框輸入cmd,然後右擊以管理員的身份運行。添加路由,輸入以下內容:

C:\Windows\system32>route add -p 172.17.0.0 mask 255.255.0.0 192.168.0.103
 操作完成!
C:\Windows\system32>ping 172.17.0.1
正在 Ping 172.17.0.1 具有 32 字節的數據:
來自 172.17.0.1 的回覆: 字節=32 時間<1ms TTL=64
來自 172.17.0.1 的回覆: 字節=32 時間<1ms TTL=64
來自 172.17.0.1 的回覆: 字節=32 時間<1ms TTL=64
來自 172.17.0.1 的回覆: 字節=32 時間<1ms TTL=64

    現在就可以在瀏覽器通過地址 172.17.0.1:8083  訪問nginx服務器

 

           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章