最近在公司做自动构建的时候,由于诸多的原因,需要将docker的网络模式切换到host模式.期间遇到一些小问题.
首先docker的网络模式分为4种.
-
bridge模式网络在该模式中,Docker守护进程创建了一个虚拟以太网桥
docker0
,附加在其上的任何网卡之间都能自动转发数据包。默认情况下,守护进程会创建一对对等接口,将其中一个接口设置为容器的eth0接口,另一个接口放置在宿主机的命名空间中,从而将宿主机上的所有容器都连接到这个内部网络上。同时,守护进程还会从网桥的私有地址空间中分配一个IP地址和子网给该容器。 -
host模式网络
该模式将禁用Docker容器的网络隔离。因为容器共享了宿主机的网络命名空间,直接暴露在公共网络中。因此,你需要通过端口映射(port mapping)来进行协调。
-
container模式网络
该模式会重用另一个容器的网络命名空间。通常来说,当你想要自定义网络栈时,该模式是很有用的。实际上,该模式也是Kubernetes使用的网络模式。
-
none模式网络
该模式将容器放置在它自己的网络栈中,但是并不进行任何配置。实际上,该模式关闭了容器的网络功能,在以下两种情况下是有用的:容器并不需要网络(例如只需要写磁盘卷的批处理任务)。
当切成host之后,自己错误的理解,去修改docker容器中的ssh 端口。
其实不需要 只需要在参数中添加
–privileged -e –net=host -p 1233:22
使用原有的docker转发就好了.
另外需要注意的是; 默认情况下的bridge模式可以通过link 来引用其他的容器.
–link=mysql-dev:mysql
而在 host 模式则无法使用,原因是host直接使用的宿主机网络.