要在 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"