首頁  >  文章  >  運維  >  docker建立成功卻無法連線怎麼辦

docker建立成功卻無法連線怎麼辦

PHPz
PHPz原創
2023-04-18 09:05:431553瀏覽

寫在前面:
本文主要講述了docker創建成功但是無法連接的原因和解決方案,是一篇針對docker初學者的實踐文章。文章中的操作和解決方案都是基於Ubuntu系統環境的。

在使用docker的過程中,有些情況即使你的容器建立成功了,但是無法連線。這種情況往往讓人很苦惱,找不到問題的所在。本文將透過一個實際案例,為大家解釋docker創建成功卻無法連接的原因及解決方案。

案例描述:

我們在本機上,使用docker建立了一個nginx容器,而存取它的時候卻無法連線成功。
步驟如下:

  1. 在Ubuntu系統上安裝docker

在指令列輸入下列指令:

sudo apt-get install docker. io

安裝完成後,使用以下指令啟動docker:

sudo systemctl start docker

  1. 在docker上建立nginx容器

#在命令列輸入如下指令:

sudo docker run --name mynginx -p 80:80 -d nginx

這個指令的意思是:使用nginx映像建立一個新容器,容器的名稱為mynginx,將80埠對應到本地的80埠上,並透過後台方式運作。

  1. 驗證容器是否建立成功

在命令列輸入以下指令:

sudo docker ps

如果顯示如下內容,表示容器建立成功:

CONTAINER ID        IMAGE               COMMAND               PORTS                NAMES
aaed7c1bcccf        nginx             0.0.0.0:80->80/tcp   mynginx

  1. 在瀏覽器中造訪nginx

在瀏覽器中輸入localhost,或127.0.0.1,即可看到nginx的歡迎介面。

但是,有些情況會出現無法存取nginx的情況。

問題分析:

首先,我們要確認問題出在哪裡。

  1. 查看系統防火牆設定

Ubuntu系統的預設防火牆工具是ufw,可以使用下列指令查看其配置:

sudo ufw status

若產出結果如下,表示系統防火牆是開啟的:

Status: active

To                            ALLOW       Anywhere

80/tcp                     ALLOW       Anywhere
22/tcp (v6)                     ALLOW       Anywhere (v6)


這時候,我們需要確認80埠是否已經被允許通過系統防火牆。透過上面的輸出可以看到,80埠已經被允許訪問,因此這個不是問題所在。

網路連線狀態

    如果我們使用ping指令查看127.0.0.1的網路連線狀態,會發現出現如下錯誤提示:
  1. ping : connect: Network is unreachable

這表示網路連線問題出在這裡。繼續排查原因。

本機網路位址是否正確

    嘗試連接nginx容器的本機網路位址,因為當我們建立容器時,將80埠對應到了本機的80埠上,因此我們需要使用容器的本地網路位址進行存取。可以使用以下指令查看本機容器位址:
  1. sudo docker inspect mynginx | grep IPAddress

回應結果應該類似於:

"IPAddress": "172.17.0.2",

嘗試在瀏覽器中造訪172.17.0.2,可以看到nginx歡迎頁面。說明此時連接埠對映和防火牆規則都是正確的。問題出在本地網路位址設定。

解決方案:

修改nginx設定文件,在設定檔中新增一個server節點,hostname為本機IP位址,如下:

server {

listen 80 default_server;
listen [::]:80 default_server;

server_name localhost;

root /var/www/html;
index index.html index.htm;

location / {
    try_files $uri $uri/ =404;
}

# 新增的本机IP节点
server {
    listen 80;
    listen [::]:80;

    server_name <本机IP>;

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

}

修改完成後,重新載入nginx設定檔:

sudo nginx -s reload

再次存取localhost或127.0.0.1,在瀏覽器中就可以看到nginx的歡迎頁了。

總結:

docker建立成功卻無法連線的問題,可能與網路連線狀態、系統防火牆配置、本機網路位址設定等有關。透過排查問題所在,並採取對應的解決方案,可以順利解決。在未來的docker使用過程中,遇到問題不要慌張,要靜下心來,細緻的查看日誌,確定問題所在,再製定處理方案,才能更好的掌握docker技術,提高開發效率。

以上是docker建立成功卻無法連線怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn