Sql server 如何将IP分配给WSL2和/或Docker容器,以便可以从本地网络访问它

Sql server 如何将IP分配给WSL2和/或Docker容器,以便可以从本地网络访问它,sql-server,docker,wsl-2,Sql Server,Docker,Wsl 2,我有一台主机(192.168.1.5),它运行Windows 10和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=

我有一台主机(192.168.1.5),它运行Windows 10和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 \
sudo docker运行-d\
-p 7000:1433\
-e SA_密码=\
-e接受_EULA=Y\
-e MSSQL_PID=开发人员\
-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']}”\
--名称sql microsoft/mssql server linux:最新\
它工作,我可以连接到它和查询等从图像内

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


如何配置公共IP(ipv4),以便远程访问mssql数据库。

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


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

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


在我发布问题的几周后,WSL2和/或Docker的更新似乎解决了我的网络问题,因此我只能假设遇到了一个暂时的错误。此问题在我遇到网络问题的两台机器上自行解决。

您是否使用了来自主机的正确端口
7000
?是的,当从主机或远程连接到vm上的docker时,我的端口没有问题。WSL2网络似乎有所不同。这是因为没有一个公共IP似乎正在停止访问。您是否从主机使用正确的端口
7000
?是的,从主机或远程连接到vm上的docker时,我对该端口没有问题。WSL2网络似乎有所不同。它的整体没有一个公共IP,似乎正在阻止访问。