docker - 如何配置 docker 以允许从其他计算机连接到容器?
问题描述
我正在尝试在 Linux docker 容器中的 Mac 上运行带有 MS SQL Server 的小型测试服务器。也许我的术语有误,所以如有必要请纠正我:
host - 安装了 docker 的 macOS 桌面(ip 10.0.1.73)
container - 在 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
认为-p 1433:1433
将 linux 端口映射到 macOS 主机端口,并允许远程计算机在从局域网连接到 macOS 主机上的该端口时访问 docker 容器
这不起作用,我认为这可能与 macOS 主机上的网络路由有关
我见过的大多数解决方案似乎都表明应该使用 VirtualBox UI 来修改网络设置 - 但我没有安装
其他人似乎有几页和几页需要的命令行指令
在我错过的地方有一个简单的解决方案吗?
编辑:
进行了更多研究,我发现了有关默认情况下如何为单主机网络设置 Docker 网络的解释。对其他在 Docker 概念上苦苦挣扎的人来说,这是一个很好的解释。
关于 docker 容器和虚拟机之间的区别也值得一读......
仍在尝试找到有关多主机网络的一些解释。
解决方案
尝试禁用要连接的主机上的防火墙。
端口 1433 将被转发到 docker 容器,但您的主机 (MAC) 应该打开端口 1433 才能连接到您的主机。
推荐阅读
- node.js - 如何在strapi中使用其他数据库连接?
- unity3d - 跟随移动 SpriteRenderer 的光点,而它应该保持静态
- twig - 用树枝表达评论
- java - 防止应用程序在奖励广告完成时崩溃 - Google Admob
- java - 用 Java 理解我的 Gson Parser 代码
- ajax - 重定向依赖于使用反应的ajax结果
- automated-tests - 在 TestRail 中更新 TestCafe 脚本执行状态(通过/失败)
- ios - 在 tableViewCell 上显示来自子节点的所有数据
- amazon-web-services - 如何按名称删除 S3 存储桶中的旧文件?
- ios - 为什么“UIView”类型的值没有来自引用 UIView 变量的成员?