技术小牛钱小白

疯狂的梦想
时而碰的遍体鳞伤,时而经历惨不忍睹的想象...
生不用封万户侯,但愿一识韩荆州。

operation中docker修改默认ip地址方法相关说明

       通常情况下docker服务安装后,docker默认使用的网络IP段是172.17.0.1/24,这样容易对实际环境造成冲突。为了解决这个问题,现介绍一个可行的解决办法。

1、检查docker版本

    docker -v

2、停止docker服务

    systemctl stop docker

3、修改默认配置[切勿与宿主机同网段]

    cat /etc/docker/daemon.json

添加要修改的网段到/etc/docker/daemon.json

{

 "registry-mirrors": [

 "https://docs.docker.com"

  ],

 "bip": "172.17.10.1/16"

}

或者:

{
“bip”: “172.20.0.1/16”
}

或者:

{

  "bip":"192.168.5.1/24"

}

注:192.168.5.1是你的IPV4地址;/24是你的子网掩码,代表255.255.255.0。

IPV4地址用32位二进制数表示,为了方便,大家使用点分十进制记法,将每个字节用"."来分开。因此32位的4字节数被分成了4段,分别是192 168 1 0。

子网掩码也是32位二进制数表示,/24指的就是子网掩码前24位全部都是1,转换过来就是:255.255.255.0

4、重启docker服务

    systemctl restart docker

原理分析

       启动 Docker的时候,用 --network 参数,可以指定网络类型

       docker run -itd --name centos7 --network bridge --ip 172.17.0.10 centos:latest /bin/bash

       docker在用户不指定的情况下,通常会创建三种常用的网络,bridge、host、none,如下图所示:


bridge:桥接网络

       默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,就导致重启后,Docker的IP地址就变了。

none:无指定网络

       使用 --network=none,docker 容器就不会分配局域网的IP,这种适合不需要分配IP的情况。

host:主机网络

       使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。

例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

名词解释

什么是 bridge

       同 tap/tunveth-pair 一样,Bridge 也是一种虚拟网络设备,所以具备虚拟网络设备的所有特性,比如可以配置 IP、MAC 等。

除此之外,Bridge 还是一个交换机,具有交换机所有的功能。

       对于普通的网络设备,就像一个管道,只有两端,数据从一端进,从另一端出。而 Bridge 有多个端口,数据可以从多个端口进,从多个端口出。

       Bridge 的这个特性让它可以接入其他的网络设备,比如物理设备、虚拟设备、VLAN 设备等。Bridge 通常充当主设备,其他设备为从设备,这样的效果就等同于物理交换机的端口连接了一根网线。

tap/tun:tun是网络层的虚拟网络设备,可以收发第三层数据报文包,如IP封包,因此常用于一些点对点IP隧道,例如OpenVPN,IPSec等。

       tap是链路层的虚拟网络设备,等同于一个以太网设备,它可以收发第二层数据报文包,如以太网数据帧。Tap最常见的用途就是做为虚拟机的网卡,因为它和普通的物理网卡更加相近,也经常用作普通机器的虚拟网卡。

veth-pair:veth pair是成对出现的一种虚拟网络设备接口,一端连着网络协议栈,一端彼此相连。

什么是 docker0 bridge

       Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。

       Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信,它还给出了 MTU(接口允许接收的最大传输单元),通常是 1500 Bytes,或宿主主机网络路由上支持的默认值。这些值都可以在服务启动的时候进行配置。

MTU:Maximum Transmission Unit,最大传输单元

       指的是数据链路层的最大payload,由硬件网卡设置MTU,是一个硬性限制。

payload:有效载荷。


评论
2021-11-25