你好,游客 登录 注册 搜索
阅读新闻

管家婆彩图库Mac 上装了Docker但我的Docker服务怎么对外开放

[日期:2019-11-07] 浏览次数:

  没太明白什么意思,docker容器不是映射到宿主机的端口吗?这不就对外开放了吗?

  docker 启动容器后,如何对外服务? 希望大家看了这篇文章后有些帮助。

  Docker生成的容器,一般会给你生成一个ip地址,这个ip地址是和docker0的地址是一个ip段的。

  通过ip a命令 ,咱们可以看到docker0的ip和子网的范围 。 大家会发现除了docker0 还有一个vethc 数字的网卡,这个也算是虚拟网卡绑在桥接上的。

  我们创建一个容器,并且暴露22端口。 这个22端口的意思是对外暴露了22端口,系统会从49000-49900端口范围内给你分配一个端口。

  docker run 指明端口有两种的方式,一种是-P ,他是识别容器里的dockerfile声明的端口关系。 还有一个是-p 这个是小屁屁,他就可以直白点了。 比如 -p 6379,是对外暴露了6379。 6379:6379 是外面是6379,里面也是6379 。

  原来我以为docker是写了一个socker做了端口的映射功能,看文档才知道,他就是调用了一个 iptable的端口映射。

  docker之间的容器默认是互通的,也就是两个容器可以互相的通信。 如果想控制容器之间的通信,可以利用 docker 的 --icc 属性控制。管家婆彩图库

  好了,我们在说下桥接的方式。 如果你觉得麻烦,每次都需要做端口的映射,或者是修改映射,那你可以考虑下用桥接网卡的模式。 貌似一些论坛上的牛人不太推荐用桥接,估计是为了安全的问题。 毕竟nat的话,对外是安全的,对外的服务也只是暴露出端口而已。 而桥接的话,会暴露ip出去。

  这样的桥接方式有个问题就是,他的ip是docker自己检测搞给你的,貌似不是dhcp获取空闲的,然后赋予给容器的。我昨天再次做测试的时候,有一个ip被占用的,但是他还是分喷给了一个被占用的ip地址。 这样的话就冲突了。 如果ip端和公司内部或者是线上重叠的话,可能会造成ip地址的冲突。 桥接后遇到ip地址冲突是个人结论 ,也可能是我这边环境导致的这类问题!