- CKA/CKAD应试教程:从Docker到Kubernetes完全攻略
- 段超飞编著
- 714字
- 2025-03-17 18:51:32
1.9 Docker网络
【必知必会】了解并创建Docker网络。
前面讲创建MySQL容器时,进行测试时连接的IP是172.17.0.2,那么容器的IP是怎么分配的呢?
1.9.1 了解Docker网络
要先了解Docker里的网络到底是怎么回事,如图1-20所示。

图1-20 Docker网络的结构
在物理机里创建一个Docker网络,本质上就是为Docker容器创建一个交换机,然后给这个交换机指定一个网段。创建好网络之后,会在物理机上产生一个虚拟网卡,这个网卡的IP地址是这个Docker网段的第一个IP地址。
比如安装好Docker之后,会自动创建一个名为bridge的网络,可以把它想象成一个交换机,它的网段是172.17.0.0/16,物理机里会生成一张网卡docker0,IP是172.17.0.1。在创建容器时,容器默认就是连接到此交换机的,所以容器里的IP也是172.17.0.0/16里的一个IP。
如果想再创建一个网络mynet,相当于为容器又创建了一个交换机,这个网段如果指定为10.0.0.0/24,则此交换机在物理机上所产生的虚拟网卡的IP是此网段的第一个IP,即10.0.0.1。连接到此交换机上的容器的IP也是10.0.0.0/24里的一个IP。
第1步 查看当前Docker网络。

第2步 查看名为bridge的网络的信息。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。
1.9.2 创建Docker网络
创建网络的语法如下。

记忆方法如下。
(1)执行man -k docker -->找到docker-network-create。
(2)man docker-network-create里面有很多例子。
对于nerdctl来说,创建网络的语法如下。

第1步 创建名称为mynet的网络,网段为10.0.0.0/24。


这里创建了一个名称为mynet、类型为bridge的网络,网段为10.0.0.0/24,以后使用该网络的容器获取的IP就在10.0.0.0/24内。
查看该网络的信息。

上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。
如果创建某容器想使用mynet,则需要使用--net=mynet选项来指定。
第2步 创建名称为c1的容器,连接到刚创建的网络mynet里。

在SSH客户端另外的标签里查询c1的IP信息。

可以看到,获取的IP是10.0.0.2,这个IP就属于mynet网段。
退出c1容器,此容器会自动删除。
上述命令在vms101上用nerdctl执行,只要把关键字docker换成nerdctl即可。