Docker容器——网络模式

Docker容器——网络模式

  • 前言
  • 一、docker网络实现的原理
  • 二、Docker 四种网络模式
    • 1、HOST模式
    • 2、container模式
    • 3、none模式
    • 4、bridge模式
  • 总结


前言

Q:docker 中有几种网络模式,分别提供哪些功能?
A:Host、container、none、bridge
Host:与宿主机共享网络、名称空间/网络协议栈、IP共享、端口范围共享
container:多个容器之间共享一个 network namespaces,多个容器公用一个IP和端口范围
none:自闭空间,无网卡、无网络连接
Bridge:默认模式,通过Veth对连接容器与docker0 网桥,网桥分配给容器IP,同时docker0 作为“局域网”内容器的网关,最后和宿主机网卡进行通讯。同时,通过IPtables 规则将容器IP/port 映射出去,用于于宿主机网卡交互。

HOST和container 两种模式,在K8S中也有对用的模式(原理相同)

Q:两个容器如何通讯?
A:Docker0、Loo 0(container 模式)


一、docker网络实现的原理

  • Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP, 同时Docker网桥是 每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。
    Docker容器——网络模式_第1张图片
    容器内先安装net-tools工具yum install -y net-tools然后查看容器IP(container ip)

  • Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过Container-IP访问到容器。如果容器希望外部访问能多访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过-p或-P参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。

docker run -itd --name test1 -P nginx							#使用大写p进行随机端口映射
docker run -itd --name test2 -p 43210:80 nginx					#使用小写p加端口进行指定的端口映射

docker ps -a
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES
155ddb0c29b3   nginx     "/docker-entrypoint.…"

你可能感兴趣的:(docker,容器,运维,网络)