如何配置docker以允许其他计算机连接到容器?

时间:2018-08-08 12:01:35

标签: docker

我正在尝试在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容器和虚拟机之间的区别...

https://youtu.be/Js_140tDlVI

仍然试图找到有关多主机网络的一些解释。

2 个答案:

答案 0 :(得分:0)

尝试在要连接的主机上禁用防火墙。

端口1433将被转发到docker容器,但是您的主机(MAC)应该打开端口1433才能连接到您的主机。

答案 1 :(得分:0)

使用NAT:

  1. 将目标地址分配给您的主机接口:

    sudo ifconfig en1 alias 10.0.1.74/21 up
    
  2. 创建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