外網如何訪問docker里的服務

隨著容器技術的普及和發展,docker 已經成為了容器化技術中的一個領軍者,是不少開發者和運維人員必不可少的工具。在實際應用中,我們常常需要將 docker 中的服務暴露出去給外網進行訪問,這時就需要用到 docker 的網絡配置和端口映射。

一、Docker 網絡配置

Docker 網絡有四種類型:橋接網絡,主機網絡,none 網絡和自定義網絡。在使用 Docker 進行服務的開發和部署時,我們通常使用自定義網絡類型,這樣可以更好地控制容器之間的通信。

Docker 的自定義網絡配置通常包括網絡名稱、網絡驅動、子網 IP 和網關等。其中,網絡驅動有 bridge、overlay、macvlan 等多種類型可供選擇。如果需要多個容器之間互相訪問,則必須在同一自定義網絡中,這樣容器之間才可以通過容器名稱或容器 ID 進行互相通信。

接下來,我們將介紹如何在 Docker 中創建自定義網絡,以及如何將服務容器加入到指定網絡中。

  1. 創建自定義網絡

我們可以通過 Docker 命令行工具,在創建容器時指定網絡名稱來創建自定義網絡。具體命令為:

docker network create --driver bridge <network_name>

其中, 為需要創建的網絡名稱。

  1. 將容器加入到指定網絡中

如果需要將容器加入到指定網絡中,可以使用 docker run 命令的 –network 選項。具體命令為:

docker run --name <container_name> --network <network_name> <image_name>

其中, 為容器名稱, 為所需加入的網絡名稱, 為容器鏡像名稱。

二、Docker 端口映射

Docker 容器中的服務默認僅能在容器內部進行訪問,如果需要讓外部網絡可以通過 IP 地址和端口號訪問該服務,則需要進行端口映射。Docker 的端口映射通常有兩種方式:靜態端口映射和動態端口映射。

  1. 靜態端口映射

靜態端口映射通常在啟動容器時進行設置。我們可以使用代表主機上端口號的 參數和代表容器內端口號的 參數將它們綁定在一起。具體命令為:

docker run -p <host_port>:<container_port> <image_name>

例如,將主機的 8080 端口映射到容器中的 80 端口:

docker run -p 8080:80 nginx

在這種情況下,我們可以通過瀏覽器訪問 http://localhost:8080 來訪問容器內的服務。

  1. 動態端口映射

動態端口映射通常是通過自動分配一個主機上未被占用的端口來進行的。我們可以使用 -P 或者 -p 命令選項來開啟動態端口映射。具體命令為:

docker run -P <image_name>

或者:

docker run -p <container_port> <image_name>

例如,使用 -P 選項啟動一個 tomcat 容器,Docker 會自動分配一個主機上未被占用的端口進行映射:

docker run -d -P tomcat

在這種情況下,我們可以使用 docker ps -a 命令來查看映射的端口號,然后通過瀏覽器訪問主機 IP 地址和分配的端口號來訪問服務。

三、結論

通過網絡配置和端口映射,我們就可以讓 Docker 容器中的服務暴露給外網進行訪問。需要注意的是,在進行 Docker 網絡配置和端口映射時一定要注意安全,避免將容器中的服務暴漏在外網環境下面,從而避免安全風險的產生。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享