Docker 网络模式
Contents
最近使用 docker 部署自己的项目,涉及到一些网络知识,因此记录下来,防止遗忘。
Docker 网络模式共有 5 种:none
、host
、bridge
、overlay
、macvlan
,其中 overlay
、macvlan
目前暂时用得少,因此不做记录。
none
即默认不联网的模式,此模式可用于一些对安全性、保密性要求较高的服务,如密钥生成服务。
host
与当前主机共享网络空间,即在此模式下的服务与宿主机上的应用在同一个网段下。
使用此模式时,端口映射参数无效,即 -p
,--publish
,-P
,--publish-all
等参数均无效。
使用此模式,由于容器端口全部都暴露在宿主机上,因此容易造成端口冲突。
注意:此网络模型目前仅支持 Linux 系统。
bridge
通过设置 bridge,可创建不同的网段,让各容器处在不同的网段中,从而达到网络隔离的效果。 新创建的容器,若不指定 bridge,则默认使用 docker0 这个 bridge。
对于 bridge 中的容器,由于容器 ip 默认由 docker 指定,因此各容器的 ip 地址不定。故实现容器间通信,有如下三种方法:
通过宿主机
使用 expose 命令,将端口暴露到宿主机中,然后请求暴露在宿主机上的端口。
link 命令
通过 link 命令,可以让容器之间通过容器名单向通信。 该命令 docker 官方不建议使用
指定 IP 地址
给每个容器指定 ip 地址,访问时使用 ip 地址来访问。 可实现容器之间的通信,但可读性较差。
使用容器名
使用容器名来访问容器,docker 会解析容器名,转换为对应的 ip。这样较为灵活、可读性强。
参考资料
https://www.cnblogs.com/shenh/p/9714547.html
https://docs.docker.com/network/host/
https://blog.csdn.net/foreverhuylee/article/details/44966109
Author jakseer
LastMod 2020-03-29