将目录挂载到docker容器中非常容易。我怎样才能轻松地将端口安装到"一个码头工人容器?
示例:
我的本地计算机上运行了MySQL服务器。要从docker容器连接到它,我可以将mysql.sock套接字文件挂载到容器中。但是出于某种原因(比如打算运行一个MySQL从属实例)我说不能使用mysql.sock来连接并需要使用TCP。
我怎样才能最轻松地完成这项工作?
需要考虑的事项:
如果我使用Linux,我可能会在本机上运行Docker,但如果我在Mac或Windows上,通过Docker Machine或Docker for Mac / Windows(Beta),我也可能在VM中运行它。答案应该无缝地处理这两种情况,没有我,因为用户必须根据我的特定Docker设置决定哪种解决方案是正确的。
简单地将容器分配给主机网络通常不是一种选择,因此不幸的是,这不是一个合适的解决方案。
潜在的解决方向:
1)我知道设置适当的本地DNS并使Docker容器(网络)与之通信可能是一个适当的,强大的解决方案。如果有这样的DNS服务,可以使用1,最多2个命令进行设置,然后"只需要工作",这可能是某种情况。
2)本质上需要的是,某些内容将侦听容器内的端口,并且类似于TCP / IP参与者之间的一种代理路由流量。 discussion on this closed Docker GH issue显示了一些ip route
命令行魔法,但对于很多人来说,这有点太多了,包括我自己。但是如果有一些类似于此的东西在完全自动化的同时理解Docker,并且再次可以启动并运行1-2个命令,那么这是一个可接受的解决方案。
答案 0 :(得分:0)
我认为您可以使用--net=host
选项运行容器。在这种情况下,容器将绑定到主机的网络,并且能够访问本地计算机上的所有端口。