如何将 IP 分配给 WSL2 and/or Docker 容器以便可以从本地网络访问它

How do you assign IP to WSL2 and/or Docker container so it can be accessed from local network

我有一台主机 (192.168.1.5),它是 运行 Windows 10 with WSL2 (winver 2004 OS build 19041.329)。

我已将我的 Docker 脚本移至 WSL2(在 Linux 虚拟机上运行良好)并且 运行 正常。我无法从主机或本地网络上的任何内容访问 mssql。

这是我的创建脚本

sudo docker run -d \
-p 7000:1433 \
-e SA_PASSWORD=<hidden> \
-e ACCEPT_EULA=Y \
-e MSSQL_PID=Developer \
-v /home/docker/mssql/backup:/data \
-v /home/docker/mssql:/var/opt/mssql \
-e attach_dbs="[{'dbName':'THEDB','dbFiles':['/data/thedb.mdf','/data/thedb_log. ldf']}]" \
--name sql microsoft/mssql-server-linux:latest \

它有效,我可以连接到它并从图像中查询等。

我尝试了各种 --network 选项,例如主机和网桥。 我不确定这是 docker 问题还是 WSL2 问题,尽管我已经很好地完成了 WSL2 sudo apt 更新。我认为它为此使用 nat 来访问 Internet。它无法 ping 通网络上的任何机器。 (来自 WSL2)

如何配置 public IP (ipv4) 以便我可以远程访问 mssql 数据库。

事实证明我没有做错任何事。访问基于 WSL2 docker 图像的方法是使用主机 IP 地址和端口(在我的例子中,我将端口更改为 7000)。

在我发布问题几周后,WSL2 and/or Docker 的更新似乎解决了我的网络问题,所以我只能假设遇到了一个临时错误。这个问题在我遇到网络问题的两台机器上自行解决。