From 790d7ade3a4d4fab1cf0bb4c28b01cf0239cc6a2 Mon Sep 17 00:00:00 2001 From: "ithink.chan" Date: Thu, 2 Jan 2020 17:56:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E8=AF=B4=E6=98=8E.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ithink.chan --- .../Applications/Docker/Docker_安装和使用.md | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/Software/Applications/Docker/Docker_安装和使用.md b/Software/Applications/Docker/Docker_安装和使用.md index a21574a..2c0eb02 100644 --- a/Software/Applications/Docker/Docker_安装和使用.md +++ b/Software/Applications/Docker/Docker_安装和使用.md @@ -43,7 +43,7 @@ docker run # 运行某镜像,为之创建容器,将宿主机端口影射到容器端口,并将宿主机的某目录挂载到容器的对应目录下 docker run -it -p -v : /bin/bash # 运行某镜像,为之创建容器,设置网络参数,并将宿主机的某目录挂载到容器的对应目录下 -docker run --net= -it -v : /bin/bash +docker run --net= -it -v : /bin/bash # 查看正在运行的容器 docker ps # 提交针对某容器的修改,将其保存为镜像 @@ -90,3 +90,34 @@ docker tag : # 删除镜像 docker image rm ``` + +## 网络模式说明 + +### bridge 模式 + +Docker 容器默认使用 bridge 模式的网络。其特点如下: + +* 使用一个 linux bridge,默认为 docker0 +* 使用 veth 对,一头在容器的网络 namespace 中,一头在 docker0 上 +* 该模式下Docker Container不具有一个公有IP,因为宿主机的IP地址与veth pair的 IP地址不在同一个网段内 +* Docker采用 NAT 方式,将容器内部的服务监听的端口与宿主机的某一个端口port 进行“绑定”,使得宿主机以外的世界可以主动将网络报文发送至容器内部 +* 外界访问容器内的服务时,需要访问宿主机的 IP 以及宿主机的端口 port +* NAT 模式由于是在三层网络上的实现手段,故肯定会影响网络的传输效率。 +* 容器拥有独立、隔离的网络栈;让容器和宿主机以外的世界通过NAT建立通信 + +### host 模式 + +Host 模式并没有为容器创建一个隔离的网络环境。而之所以称之为host模式,是因为该模式下的 Docker 容器会和 host 宿主机共享同一个网络 namespace,故 Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。换言之,Docker Container的 IP 地址即为宿主机 eth0 的 IP 地址。其特点包括: + +* 这种模式下的容器没有隔离的 network namespace +* 容器的 IP 地址同 Docker host 的 IP 地址 +* 需要注意容器中服务的端口号不能与 Docker host 上已经使用的端口号相冲突 +* host 模式能够和其它模式共存 + +### container 模式 + +Container 网络模式是 Docker 中一种较为特别的网络的模式。处于这个模式下的 Docker 容器会共享其他容器的网络环境,因此,至少这两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离。 + +### none 模式 + +网络模式为 none,即不为 Docker 容器构造任何网络环境。一旦Docker 容器采用了none 网络模式,那么容器内部就只能使用loopback网络设备,不会再有其他的网络资源。Docker Container的none网络模式意味着不给该容器创建任何网络环境,容器只能使用127.0.0.1的本机网络。