我正在尝试在Linux docker容器中的Mac上运行带有MS SQL Server的小型测试服务器。也许我的术语有误,所以如有必要,请纠正我:
host-安装了docker(ip 10.0.1.73)的macOS桌面
容器-在Docker容器中运行并在其中运行SQL Server的Linux实例
远程桌面-局域网上另一台试图连接到SQL Server的计算机
我按照MS的安装说明进行了操作,但一切似乎都运行良好,但无法从远程桌面连接到SQL Server
我可以连接到Docker主机(10.0.1.73)并可以ping通IP地址
我可以从docker主机连接到SQL Server并查看数据库等。
我使用以下命令创建了docker容器
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<XXXXXX>" -p 1433:1433 --name sqlserver1 -d microsoft/mssql-server-linux:2017-latest
认为-p 1433:1433
会将linux端口映射到macOS主机端口,并在从局域网连接到macOS主机上的端口时允许远程计算机访问docker容器
这不起作用,我认为这可能与macOS主机上的网络路由有关
我见过的大多数解决方案似乎都表明应该使用VirtualBox UI来修改网络设置-但我没有安装
其他人似乎都有需要的页面和命令行指令页面
我错过的某个地方有简单的解决方案吗?
编辑:
更多的研究,我发现了有关默认情况下如何为单主机网络设置Docker网络的解释。对于其他在Docker概念上苦苦挣扎的人来说,这是一个很好的解释。
还值得阅读有关Docker容器和虚拟机之间的区别...
仍然试图找到有关多主机网络的一些解释。
答案 0 :(得分:0)
尝试在要连接的主机上禁用防火墙。
端口1433将被转发到docker容器,但是您的主机(MAC)应该打开端口1433才能连接到您的主机。
答案 1 :(得分:0)
使用NAT:
将目标地址分配给您的主机接口:
sudo ifconfig en1 alias 10.0.1.74/21 up
创建docker容器并将端口映射到分配给主机接口的第二个IP地址
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<XXXXXXXXX>" -p 10.0.1.74:1433:1433 --name sqlserver1 -d microsoft/mssql-server-linux:2017-latest