簡體   English   中英

如何從 Windows 主機獲取位於橋接網絡內的 Docker 容器的 IP 地址?

[英]How to get a Docker container's IP address, located within a bridge network, from a windows host?

使用以下命令在 docker 中創建了橋接網絡:

docker network create blognetwork

並且已經在該網絡中創建了一個容器,其內容如下:

docker run --name=blogdb --network=blognetwork -p 3306:3306 -e --bind-address=0.0.0.0 -e=MYSQL_ROOT_PASSWORD=mypassword -detach mysql

如何從 Windows 主機訪問“blognetwork”中新容器的 IP 地址?

如何自行獲取 XXXX 形式的 IP 地址? 我知道我可以使用以下內容來獲取包含此數據的大型 json 輸出:

docker network inspect blognetwork

您可以使用 docker inspect 和正確的格式直接獲取 ip:

docker inspect containerId --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

Docker 文檔中的更多信息

您可以使用 docker inspect 直接獲取 IP 地址。 Docker inspect 提供有關由 Docker 控制的構造的詳細信息。

現代 Docker 客戶端語法是:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

舊的 Docker 客戶端語法是:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

這些命令將返回 Docker 容器的 IP 地址。

如果您使用的是 Windows,請在花括號周圍使用雙引號 " 而不是單引號 '。

有關更多信息Docker 檢查文檔

這是獲取容器信息和容器 IP 的命令。

docker inspect 'ContainerID'

既然你跑了

docker run -p 3306:3306 ...

您應該使用主機的 DNS 名稱或 IP 地址通過端口 3306 訪問該服務。

在非常特殊的情況下,您在運行docker run的機器上的 shell 提示符或瀏覽器 URL 條目中,假設您沒有使用 Docker Machine 或 Docker Toolbox,在這種情況下(僅在這種情況下),您可以使用localhost:3306訪問容器。 永遠不要將localhost用於 Docker 周圍的任何其他東西,除非您完全清楚它的含義。 (如果您開始寫一個使用“...的本地主機...”字樣的問題,那么 localhost 不是您想要的。)

如果您嘗試從另一個容器訪問此容器,因為您運行了

docker run --name=blogdb --network=blognetwork ...

您可以使用名稱blogdb作為主機名,Docker 提供了一個內部 DNS 服務,可以將其解析為將到達容器的內容。

您永遠不需要 Docker 內部 IP 地址,也不應該運行docker inspect來嘗試找到它。 它的兩個最大問題是它無法從主機外訪問,並且當容器被刪除和重新創建時它會發生變化。

暫無
暫無

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

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