书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》
一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Kubernetes认证考试自学系列 | 汇总_COCOgsta的博客-CSDN博客
1.8.1 了解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网络。
[root@vms100 ~]# docker network list
NETWORK ID NAME DRIVER SCOPE
d5ce17cd1128 bridge bridge local
03b05ec43e7a host host local
a935f5599b67 none null local
[root@vms100 ~]#
复制代码
步骤2:查看名字为bridge的网络的信息。
[root@vms100 ~]# docker network inspect bridge
[
{
"Name": "bridge",
大量输出...
},
"Labels": {}
}
]
[root@vms100 ~]#
复制代码
1.8.2 创建docker网络
创建网络的语法:
docker network create -d 类型(一般写bridge) --subnet=网段 网络名
复制代码
步骤1:创建名字为mynet的网络, 网段为10.0.0.0/24。
[root@vms100 ~]# docker network create -d bridge --subnet=10.0.0.0/24 mynet
e252fe757c2c8b40d078a2d4ec5838cb1cb276496d8e4c22f38908336418d677
[root@vms100 ~]#
复制代码
这里创建了一个名字为mynet、类型为bridge的网络, 网段为10.0.0.0/24, 以后使用该网络的容器获取的IP就在10.0.0.0/24内。
查看该网络的信息。
[root@vms100 ~]# docker network inspect mynet
[
{
"Name": "mynet",
...输出...
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "10.0.0.0/24"
}
...输出...
}
]
[root@vms100 ~]#
复制代码
如果创建某容器想使用mynet的话, 则需要使用--net=mynet来指定。
步骤2:创建名字为c1的容器, 连接到刚创建的网络mynet里。
[root@vms100 ~]# docker run --net=mynet -it --name=c1 --rm hub.c.163.com/library/centos
[root@56589f42218b /]#
复制代码
在ssh客户端另外的标签里查询c1的IP信息。
[root@vms100 ~]# docker inspect c1 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "10.0.0.2",
[root@vms100 ~]#
复制代码
可以看到获取的IP是10.0.0.2, 这个IP就属于mynet网段。
退出c1容器,此容器会自动删除。