Docker网络模式说明

如今的Docker版本不推荐继续使用Link了,而是推荐用网络模式解决问题,简单讲一下最经常使用的几个网络模式,其余我用到时候再补充。docker

bridge

-net不加参数就是默认的bridge模式,这个默认bridge模式下,容器会链接到默认网桥docker0,但容器与宿主机,容器与容器的网络均是隔离的,没法互相访问,想要访问须要将容器的一些端口EXPOSE,对于单容器服务而言一般已经足够了。网络

若是想让容器互相通讯,须要采用自定义bridge的方法,运行命令ssh

docker network ls

能够看到有哪些网络已经建立,使用命令code

docker network create <my_net>

能够建立自定义网桥,以后,运行镜像时指定网桥并给镜像名称,如dockerfile

docker run -it --network <my_net> --name <container_name> <image:tag>

则指定了容器的网桥。使用同一网桥的容器互相连通,能够经过容器名互相访问,这样的模式可以应对同一机器上几个容器组合工做的场景。it

host

host模式无需多言,即让容器和宿主机共享同一网络,适合于多机工做的服务,须要注意的是容器内部运行程序的端口不能和宿主机有冲突,这里建议在建立镜像的Dockerfile中经过ENTRYPOINT来灵活定义容器内服务的端口,例如,一个跑sshd服务的容器,能够在Dockerfile中加入以下一行做为最后一行:class

ENTRYPOINT ["/usr/sbin/sshd","-D","-p"]

运行时,只须要使用容器

docker run -d --network host <sshd_image:tag> <port>

便可在指定端口运行,这样就不会和主机的sshd端口冲突。file

相关文章
相关标签/搜索