Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何配置docker以允许从其他计算机连接到容器?_Docker - Fatal编程技术网

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

如何配置docker以允许从其他计算机连接到容器?,docker,Docker,我正在尝试在Linux docker容器中运行一个小型测试服务器,其中MS SQL server在Mac上运行。可能我的术语有误,因此请在必要时纠正我: 主机-安装docker的macOS桌面(ip 10.0.1.73) 容器—在docker容器中运行的Linux实例,其中运行SQL Server 远程桌面-局域网上试图连接到SQL Server的另一台计算机 我按照MS的安装说明进行了操作,除了无法从远程桌面连接到SQL Server之外,一切似乎都正常运行 我可以连接到docker主机(10

我正在尝试在Linux docker容器中运行一个小型测试服务器,其中MS SQL server在Mac上运行。可能我的术语有误,因此请在必要时纠正我:

主机-安装docker的macOS桌面(ip 10.0.1.73)

容器—在docker容器中运行的Linux实例,其中运行SQL Server

远程桌面-局域网上试图连接到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
sudo docker run-e“ACCEPT_EULA=Y”-e“SA_PASSWORD=“-p 1433:1433--名称sqlserver1-d microsoft/mssql server linux:2017最新版本
认为
-p 1433:1433
会将linux端口映射到macOS主机端口,并允许远程计算机在从局域网连接到macOS主机上的端口时访问docker容器

这不起作用,我认为这可能与macOS主机上的网络路由有关

我看到的大多数解决方案似乎都表明应该使用VirtualBox UI来修改网络设置,但我没有安装它

其他人似乎有一页又一页的命令行指令是必需的

在我错过的地方有没有一个简单的解决办法

编辑:

通过进一步的研究,我发现了关于Docker网络默认设置为单主机网络的解释。很好地解释了其他与Docker概念斗争的人

关于docker容器和虚拟机之间的区别也值得一读


仍在尝试查找有关多主机联网的一些说明。

尝试取消您要连接的主机上的防火墙的名称


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

尝试取消您要连接的主机上的防火墙

端口1433将转发到docker容器,但您的主机(MAC)应打开端口1433,以便能够连接到主机。

使用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
    
    sudo docker run-e“ACCEPT_EULA=Y”-e“SA_PASSWORD=“-p 10.0.1.74:1433:1433--名称sqlserver1-d microsoft/mssql server linux:2017最新版本
    
  • 使用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
    
    sudo docker run-e“ACCEPT_EULA=Y”-e“SA_PASSWORD=“-p 10.0.1.74:1433:1433--名称sqlserver1-d microsoft/mssql server linux:2017最新版本
    

  • 防火墙已关闭。我可以告诉您,我需要设置某种桥接网络。默认情况下,docker容器将不会访问您的LAN。它将只能从您的主机通过172。。。IP(我的头顶)。但是,如果您在端口1433上连接到主机,则应将其转发到容器。无论如何,我认为防火墙已关闭。我可以告诉您,我需要设置某种桥接网络。默认情况下,docker容器将不会访问您的LAN。它将只能从您的主机通过172。。。IP(我的头顶)。但是,如果您在端口1433上连接到主机,则应该将其转发到容器,我认为Docker for Mac或Docker Toolbox?(你的菜单栏上有“鲸鱼”图标吗?你是否运行过
    docker机器
    命令?)我有鲸鱼图标-我想是Mac的docker。Mac的docker,还是docker Toolbox?(你的菜单栏上有“鲸鱼”图标吗?你是否运行过
    docker机器
    命令?)。