docker不会使用网络主机公开端口

时间:2016-08-11 05:43:29

标签: docker dockerfile

我正在尝试运行一个侦听端口5555的docker容器,该图像是在Dockerfile中使用EXPOSE 5555构建的,我正在运行容器,如下所示

$ docker run -d --name controler -p 5555:5555  -v /var/run/docker.sock:/var/run/docker.sock --net=host  my_image:latest

容器启动正常,但端口未暴露,运行docker port会返回错误消息

$ docker port controler 5555
Error: No public port '5555/tcp' published for controler

如果我在没有--net=host的情况下运行容器,则会显示端口,我可以访问容器。

对于这里真正发生的事情的任何想法或提示都表示赞赏。

  

注意:我正在使用最新的docker for mac beta版本1.12.0-beta21   (建立:11019)在我的mac上运行el capitan

2 个答案:

答案 0 :(得分:8)

--net=host选项

此选项将容器的虚拟NIC绑定到主机物理网卡(通过提供对本地系统服务(如D-bus)的完全访问权限。)

当使用此选项时,主机将从物理网卡中为每个请求网络套接字的程序授予一个程序。然后,您的服务将按预期使用5555端口。

-p 5555:5555选项

此选项将网络套接字iptable绑定(通过containter-ip:5555 - 类似机制)到网络套接字host-ip:5555

换句话说

看来,恕我直言,两者都使用它们有点不合逻辑。如果需要将容器化服务发布到套接字host-ip:5555,那么最简单的方法是使用-p 5555:5555选项。

答案 1 :(得分:-1)

在jdbc url中添加您的IP spring.datasource.url = jdbc:postgresql://12.45.67.12:5432 / postgres

将此conf添加到pg_hba.conf文件中 托管所有0.0.0.0/0 md5`

这个conf正在为我工​​作