Docker中的网络与数据管理


一、Docker网络管理

1、Docker默认网络管理

docker的网络模式

DOCKER容器搭建网心云教程 docker 网络管理_Docker集群构建


注:docker有三种网络模式,默认的为

bridge

,配置后可以和宿主机通信,host和none属于无网络,容器添加到这两个网络时不能和外界网络通信。

(1)、创建并启动容器

DOCKER容器搭建网心云教程 docker 网络管理_数据_02


查看容器:


DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_03


(2)、查看网络详情

DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_04


注:使用上述命令后显示bridge网络的所有详细信息,里面包括networktest容器。

2、自定义bridge网络

(1)、创建自定义网络

DOCKER容器搭建网心云教程 docker 网络管理_Docker集群构建_05


(2)、使用自定义网络启动容器

使用自定义网络启动一个名为

nwtest

的容器


DOCKER容器搭建网心云教程 docker 网络管理_Docker网络管理_06


查看nwtest的网络详情


#docker inspect nwtest

DOCKER容器搭建网心云教程 docker 网络管理_Docker集群构建_07


(3)、为容器添加网络管理

执行如下命令为nwtest添加bridge网络管理


#docker network connect bridge nwtest

查看nwtest的网络详情


#docker inspect nwtest

由下图可以看出,执行容器添加网络管理指令后,nwtest拥有了两种网络管理方式


DOCKER容器搭建网心云教程 docker 网络管理_Docker_08


(4)、断开容器网络连接

DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_09


(5)、移除自定义网络

DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_10

3、容器之间的网络通信

(1)、创建容器
创建两个默认使用bridge网络的容器

DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_11


创建一个使用自定义网络isolated_nw的容器


DOCKER容器搭建网心云教程 docker 网络管理_数据_12


为container2容器新增一个使用自定义的isolated_nw网络连接

DOCKER容器搭建网心云教程 docker 网络管理_Docker集群构建_13


执行完上述指令后,容器之间形成了如下所示的网络关系图

DOCKER容器搭建网心云教程 docker 网络管理_Docker网络管理_14


(2)、容器地址查看

查看container2容器的地址:


DOCKER容器搭建网心云教程 docker 网络管理_Docker网络管理_15


查看container1容器的地址:


DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_16


查看container3容器的地址:


DOCKER容器搭建网心云教程 docker 网络管理_数据_17


container2容器的地址

:172.17.0.5 和172.18.0.3


container1容器的地址

:172.17.0.4


container3容器的地址

:172.18.0.2


(3)、容器通信测试

如图所示,在container1内使用” ping -w -4 IP " 和 "ping -w -4 容器名称”都无法连接containner1,验证了

容器不在一个网络环境下无法通信

DOCKER容器搭建网心云教程 docker 网络管理_Docker_18


如图所示,在container2内使用” ping -w -4 IP " 可以连接containner1和containner3,验证了

容器在同一网络环境下可以通信


DOCKER容器搭建网心云教程 docker 网络管理_Docker_19


如图所示,在container2内使用” ping -w -4 容器名称 " 连接containner1和containner3,验证了

容器使用bridge网络管理不可以使用主机名进行通信,使用自定义网络管理可以使用主机名进行通信


DOCKER容器搭建网心云教程 docker 网络管理_Docker集群构建_20

二、Docker Swarm 集群

1、环境搭建

(1)、准备3台Ubuntu系统主机(即用于搭建集群的3个Docker机器), 每台机器上都需要安装Docker并且可以连接网络,同时要求Docker版本都必须是1.12及以上,因为老版本不支持Docker Swarm。
(2)、集群管理节点Docker机器的IP地址必须固定,集群中的所有节点都能够访问该管理节点。
(3)、集群节点之间必须使用相应的协议并保证其以下端口号可用:
● 用于集群管理通信的TCP端口2377;
●TCP和UDP端口7946,用于节点间的通信;
●UDP端口4789,用于覆盖网络流量。
这三台机器的主机名称分别为manager1(作为管理节点) worker1(作为工作节点) 和worker2 (作为工作节点),其IP地址分别如下。
manager1:192.168.10.3
worker1:192.168.10.4
worker2:192.168.10.5

2、创建Docker Swarm集群

(1)、在名为manager1的Docker机器上创建Docker Swarm集群

DOCKER容器搭建网心云教程 docker 网络管理_Docker网络管理_21


执行上述指令后,Docker就会自动在IP为192.168.1.3的机器上创建一个Swarm集群,并将该IP地址的机器设置为集群的管理节点。


(2)、查看集群节点信息


DOCKER容器搭建网心云教程 docker 网络管理_Docker网络管理_22

3、向Docker Swarm集群添加节点

(1)、启动另外两台Docker机器,分别执行如下指令
# docker swarm join --token SWMTKN-1- 4cgj2ubq2j7ajr0dy91c5a8zn70lxsxzw6oaqef8kxxhcm7q9t-9nmr1lxjfbfl3ayo1eo2y1yvf 192.168.1.3:2377

DOCKER容器搭建网心云教程 docker 网络管理_数据_23


注:上述指令中的 --token参数一定要使用自己在前面创建Docker Swarm集群时返回的向集群中添加节点的指令。

(2)、再次查看集群节点信息


DOCKER容器搭建网心云教程 docker 网络管理_数据_24

4、向Docker Swarm集群部署服务

使用Docker Hub自带的alpine镜像部署集群服务:

DOCKER容器搭建网心云教程 docker 网络管理_Docker_25


部署集群服务


DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_26

5、查看Docker Swarm集群中的服务

(1)、查看服务列表信息

DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_27


(2)、查看部署的服务的具体详情


DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_28

6、更改Docker Swarm集群服务副本数量

在管理节点上,更改服务副本数量的命令如下:

DOCKER容器搭建网心云教程 docker 网络管理_Docker集群构建_29

7、删除服务

在管理节点上,删除服务的命令如下

DOCKER容器搭建网心云教程 docker 网络管理_Docker_30

8、访问服务

(1)、查看网络列表

DOCKER容器搭建网心云教程 docker 网络管理_数据_31


注:与非集群环境下的Docker网络对比,Docker Swarm集群网络列表多了以bridge和overlay为驱动的网络。


(2)、在管理节点上创建以ovlrlay为驱动的自定义网络


DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_32


(3)、在管理节点上再次部署服务


DOCKER容器搭建网心云教程 docker 网络管理_数据_33


(4)、在管理节点上查看服务副本运行情况

DOCKER容器搭建网心云教程 docker 网络管理_Docker网络管理_34


(5)、外界访问服务


打开浏览器,使用任何一台节点机器的“IP+8080"或”主机名“8080”进行访问,都可以正常显示


DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_35

三、Volumes 数据卷管理

1、创建并管理数据卷

(1)、创建数据卷

DOCKER容器搭建网心云教程 docker 网络管理_Docker_36


(2)、查看数据卷


DOCKER容器搭建网心云教程 docker 网络管理_Docker集群构建_37


(3)、核查数据卷

DOCKER容器搭建网心云教程 docker 网络管理_Docker_38


(4)、删除数据卷


不再使用数据卷后,可以使用下列命令删除指定名称的数据卷:


#docker volume rm my-vol

2、启动容器并加载数据卷

(1)、查看本机容器和数据卷

DOCKER容器搭建网心云教程 docker 网络管理_数据_39


(2)、确认查看本机Docker文件系统中的容器和数据卷


DOCKER容器搭建网心云教程 docker 网络管理_数据_40


(3)、启动容器并挂载数据卷


使用docker run 指令创建并启动一个容器,同时挂载一个数据卷:


DOCKER容器搭建网心云教程 docker 网络管理_数据_41


也可以使用 -v 参数挂载数据卷:docker run -d -it --name devtest --mount source=myvol,target=/app busybox:latest


(4)、再次查看本机容器和数据卷列表


DOCKER容器搭建网心云教程 docker 网络管理_Docker_42


(5)、查看容器详情


#docker inspect devtest

DOCKER容器搭建网心云教程 docker 网络管理_DOCKER容器搭建网心云教程_43


(6)、再次确认本机Docker文件系统中的容器和数据卷


DOCKER容器搭建网心云教程 docker 网络管理_Docker_44