Docker网络管理

Docker默认的网络设置

默认在每个宿主机会生成一个名称为docker0的网卡  默认是172.17.0.1/16

每次新建容器后
宿主机多了一个虚拟网卡和容器的网卡组合成一个网卡
容器会自动获取一个172.17.0.0/16网段的随机地址
容器获取的地址并不固定,每次容器重启,可能会发生地址变化

容器间的通信

默认情况下:同一个宿主机的不同容器可相互通信
不同宿主机之间容器IP地址重复,默认不能相互通信 

禁止同一宿主机的不同容器间通信

dockerd --icc   (默认为true)
此配置可以禁止同一个宿主机的容器之间通信
修改/lib/systemd/system/docker.service文件
ExecStart=/usr/bin/dockerd -H fd:// --containerd==/run/containerd/containerd,sock--icc=false

修改默认docker0网桥的网络配置

默认docker后会自动生成一个docker0的网桥,使用的IP是172.17.0.0.1/16,可能和宿主机的网段发生冲突,可将其修改为其他网段的地址,避免冲突
方法1
vim /etc/docker/daemon.json   此文件也用于镜像加速
添加 "bip":"192.168.100.1/24"
方法2
vim /lib/systemd/system/dicker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd==/run/containerd/containerd,sock--icc=false--bip=192.168.100.1/24
重启配置文件:systemctl daemon-reload     systemctl restart docker.service
注意:这两种方法不可混用,否则将无法启动docker服务

修改默认网络设置使用自定义网桥

新建容器默认使用docker0的网络配置,可以修改默认指向自动义的网桥网络
1.安装bridge-utils包
使用brctl创建网桥   brctl addbr  br0
2.使用 ip address 命令   指定网桥的网段
ip address a 192.168.100.1/24  dev br0
3.指定网桥
vim /lib/systemd/system/dicker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd==/run/containerd/containerd,sock-b br0
重启配置文件:systemctl daemon-reload     systemctl restart docker.service

容器名称互联

新建容器时,docker会自动分配容器名称,容器ID和IP地址,导致容器名称,容器ID和IP都不固定
固定名称实现确定目标的通信
两种固定名称:容器名称       容器名称的别名

通过容器名称互联

同一个宿主机上的容器之间可以通过自定义的容器名称i相互访问
注:如果被引用的容器地址变化,必须重启当前容器才能生效

容器名称实现

docker run创建容器,可使用--link选项实现容器名称的引用
其本质就是在容器内的/etc/hosts中添加--link后指定的容器的IP和主机名的对应关系,从而实现名称解析   
--link list
格式:
先创建指定名称的容器   docker run --name <容器名称>
在创建容器时引用上面容器的名称   docker run  --link  <目标通信的容器ID或容器名称>

通过自定义容器别名互联

自定义的容器名称可能后期会发生变化,一旦名称发生变化,容器内程序之间也必须要随之发生变化,因此可以使用自定义别名的方式解决,即容器名称可以随意更改,只要比更改别名即可
容器别名实现
命名格式:
先创建指定名称的容器  docker run --name <容器名称>
给上面创建的容器起别名,来创建容器  docker run --name <容器名称>  --link <目标容器名称>:"<容器别名1>,<容器别名2>.."

docker网络连接模式

docker的网络支持5种网络模式:
none  bridge   host   container   network-name
查看网络模式    docker network ls

网络模式指定

默认新建的容器使用Bridge模式
创建容器时,指定网络模式    docker run --network <mode>  |  --net=<mode>
<mode>:可是以下值
none
bridge
host
container:<容器名或容器ID>
<自定义网络名称>

bridge 网络模式(NAT模式)

本模式是docker的默认模式,即不指定任何模式就是bridge模式,此模式创建的容器会为每一个容器分配自己的网络IP等信息,并将容器连接到一个虚拟网桥与外界通信
NAT模式通过SNAT访问外网,使用DNAT可以让容器被外部主机访问
此模式宿主机需要启动ip_forward功能
查看bridge模式信息  docker network inspect bridge
安装docker后,默认启用ip_forward 可通过文件查看 /proc/sys/net/ipv4_forward

修改默认birdge模式网络配置

有两种方法修改默认的bridge模式的网络配置,两种方式只能选一种,否则会导致冲突,docker服务无法启动

Host网络模式

指定host模式启动的容器,那么新创建的容器不会创建自己的虚拟网卡,而是直接使用宿主机的网卡和IP地址。
访问容器的时候直接使用宿主机IP和容器端口即可,适用于运行容器端口比较固定的业务

Host网络模式特点

使用参数 --network host指定
共享主机网络
网络性能无损耗
网络故障排除相对简单
各容器网络无隔离
网络资源无法分别统计
端口管理困难,容易产生端口冲突
不支持端口映射

创建host模式的容器

docker run -d --network host .....

none模式

在使用none模式后,Docker容器不会进行任何网络配置,没有网卡,没有IP和路由,默认无法与外界通信,需要手动添加网卡配置

none模式特点

使用参数 --network none指定
默认无网络功能,无法和外部通信
无法实现端口映射
适用于测试环境

创建none模式的容器

docker run --network none ....

Container模式

使用此模式创建的容器需指定和一个已经存在的容器共享一个网络,而不是和宿主机共享网络,新创建的容器不会创建自己的网卡也不会配置自己的IP,而是和一个被指定的已存在的容器共享IP和端口范围,因此这个容器端口不能和被指定容器的端口冲突

Container模式特点

使用参数--network container:名称或ID指定
与宿主机网络空间隔离
容器间共享网络空间
适合频繁的容器间的网络通信
直接使用对方的网络,较少使用

创建Container模式的容器

docker run --network container:name|ID  ....

自定义网络模式

注:自定义网络内的容器可以直接通过容器名进行相互的访问,而无需使用--link

创建自定义网络

docker network create -d <mode> --subnet <CIDR> --gateway <网关> <自定义网络名称>
注意:mode不支持host和none,默认是bridge模式

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 提供了各种网络管理选项,用于在容器之间建立网络连接和通信。以下是一些常见的 Docker 网络管理概念和功能: 1. Docker 网络驱动程序(Network Drivers):Docker 支持多种网络驱动程序,用于创建和管理容器之间的网络。默认情况下,Docker 使用 `bridge` 驱动程序。 2. 网络模式(Network Modes):Docker 提供了几种网络模式,用于定义容器如何与主机和其他容器通信。常见的网络模式包括 `bridge`、`host`、`overlay` 和 `none`。 3. 网络创建(Network Creation):可以使用 Docker 命令或 Docker Compose 文件来创建自定义网络。创建自定义网络可以为容器提供隔离的网络环境,并根据需要配置网络参数。 4. 容器连接(Container Networking):可以使用 Docker 命令或 Docker Compose 文件将容器连接到特定网络。这样可以使容器能够通过网络与其他容器或主机进行通信。 5. 网络别名(Network Aliases):Docker 允许为容器分配多个网络别名,这样容器可以通过多个名称进行访问。这对于容器之间的相互通信和服务发现非常有用。 6. 跨主机网络(Multi-Host Networking):Docker 提供了 `overlay` 和 `macvlan` 网络驱动程序,允许在多个 Docker 主机之间创建跨主机网络。这样可以在分布式环境中轻松地管理容器之间的通信。 以上只是 Docker 网络管理的一些基本概念和功能。具体使用方法和配置选项可以参考 Docker 官方文档或其他相关资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值