[Linux] windows遠端 + wsl + docker 開放 0.0.0.0:8080 給外部使用


Posted by mike-hsieh on 2024-06-14

要在 windows遠端 + wsl + docker 手動建立一個 0.0.0.0:8080 的對外 port,但是一直建立失敗,都是 127.0.0.1:8080,想到我是使用 wsl,因此有找到解決方法,參考以下步驟:


1. 編輯 Docker Daemon 設定

確保 Docker daemon 被配置為監聽所有網路介面。編輯 Docker daemon 設定檔 /etc/docker/daemon.json:

sudo nano /etc/docker/daemon.json

新增或修改以下內容:

{
  "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

保存並退出檔案,然後重啟 Docker 服務:

sudo service docker restart

# ctrl + O, Enter 可以儲存
# ctrl + X 可以離開


2. 在 WSL2 中設定 Port 轉發

在wsl中使用以下命令找到 WSL2 的 IP 地址:

ip addr show eth0

# 可以看到類似這一行
# inet 199.33.122.100/20 brd 199.22.144.123 scope global eth0
# 取第一個 199.33.122.100 即可

因WSL2 使用虛擬網路,所以須配置埠轉發以確保埠對外可訪問。
打開 Windows 的 PowerShell 並以管理員身份運行以下命令來配置埠轉發以確保埠對外可訪問:

# <WSL_IP_ADDRESS> 替換為 199.33.122.100
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=<WSL_IP_ADDRESS> connectport=8080


3. 建立 container

最後就是把容器的 port 設定為 8080 即可

docker run -d -p 8080:80 your_docker_image

補充:

  • 查看 port 是否有綁定 0.0.0.0:8080
    # windows遠端 cmd 查找所有 8080 port 的相關 IP
    netstat -an | find "8080"
    

#Windows #wsl #docker #0.0.0.0 #127.0.0.1 #remote #external







Related Posts

陣列由小到大排序

陣列由小到大排序

[ MTR04 ] Final project 心得_ Parlando

[ MTR04 ] Final project 心得_ Parlando

Web開發學習筆記06 — Function Scope vs. Block Scope、IIFE

Web開發學習筆記06 — Function Scope vs. Block Scope、IIFE


Comments