[英]In Docker Desktop for windows 10 with WSL2, where does docker containers live & how Linux containers can run a java app, but not windows nanoserver?
[英]Reference Windows containers by name from Linux containers in Docker Desktop
我有 2 個 Windows 容器和 2 個 Linux 容器,我試圖在 Docker 桌面上一起工作。 我對兩者都有單獨的組合文件,當我“組合”兩者時(使用“切換到 Windows/Linux 容器...”),它們可以使用他們獲得的內部 IP 地址進行通信。 但是,當我嘗試使用撰寫文件的服務名稱時,它們找不到彼此。
關於networking:
編寫文件的一部分,嘗試將它們放在同一個網絡中:
external
default
和external
(基本上,我嘗試了這個 Stackoverflow 問題中提到的所有內容)
正如這個問題中也提到的,Windows 上下文似乎無法看到 Linux 上下文。 如果一側有網絡external
,您會收到網絡未知的錯誤。 如果兩者都定義了相同的網絡名稱(不使用external
),那么它們仍然看不到對方。
下面的兩個示例撰寫文件說明了這個問題。 linuxservice
和nodered
無法引用winservice
,但可以通過其內部 IP 地址訪問該容器。 從nodered
嘗試 localhost:9340 也不起作用,並導致“連接被拒絕”錯誤。
為我的 Linux 容器編寫文件:
version: "3.7"
services:
linuxservice:
image: myregistry/mycontainer:development
ports:
- 8080:8080
nodered:
image: nodered/node-red
ports:
- 1880:1880
volumes:
- 'C:/data/Docker/nr-volume:/data'
networks:
default:
name: docker-net
為我的 Windows 容器編寫文件:
version: '3.1'
services:
windb:
image: myregistry/olmysql:v2
ports:
- 3306:3306
winservice:
image: myregistry/connect:latest
ports:
- 9340:9340
depends_on:
- windb
networks:
default:
name: docker-net
有什么辦法可以使這些容器通過名稱而不是 IP 地址進行通信? 假設沒有辦法將它們放在一個網絡中,是否有可能在兩個網絡中的任一網絡中創建某種 DNS? 或者有沒有辦法讓他們使用localhost:9340
?
當然,一旦我發布了問題,我就會發現至少可以工作的東西。
按照這里的建議使用host.docker.internal:9340
至少可以避免使用 IP 地址。
我暫時保留這個問題,以防萬一有人知道如何讓 Linux 和 Windows 網絡看到彼此的服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.