Docker中的网络与数据管理
Docker网络管理
-
Docker默认网络管理
列举Docker中的所有网络
1、创建并启动容器
2、使用网络查看指令查看网络详情 -
自定义bridge网络
1、创建自定义网络
2、使用自定义网络启动容器
进入容器查看:
3、为容器添加网络管理
4、断开容器网络连接并移除自定义网络 -
容器之间的网络通信
1、创建容器
(1)、创建两个使用默认bridge网络的容器
(2)、创建一个使用自定义的isolated_nw网络的容器(isolated_nw为预先创建的自定义网络)
(3)、为container2容器新增一个自定义的isolated_nw 网络连接
2、容器地址查看
3、容器通信测试
从以上两个图可以看出,在container2里,使用ping -w 4 ip可以ping通1和3,而使用ping -w 4 容器名 ,container3可以通,container1显示 bad address ‘container1’.
通过以上分析得出一个结论:不同容器之间想要相互通信,必须在同一个网络环境下,使用默认bridge网络管理的容器可以使用容器ip通信,但无法使用容器名称通信,而使用自定义网络管理的容器可以同时使用ip和容器名称。
4、默认网络下使用–link参数通过容器名进行通信
创建容器4:
Docker Swarm集群
-
DockerSwarm
作为docker引擎一部分的集群管理:用docker引擎的命令行接口来创建一个docker引擎的集群,用来部署应用服务。你不需要额外安装软件来创建或管理集群。(译者注:就是docker自带的集群编排管理工具,兼容性好,学习成本低(相比kubernetes))。
分散化设计:不是在发布时处理不同的节点角色,而是在运行时,docker引擎才会根据不同的节点角色区别处理。你可以用docker引擎发布节点,管理者和工作者等各种角色。这意味着你可以用一个磁盘镜像构建整个集群。
声明式服务模型:docker引擎通过声明式的接口来允许你定义应用栈中服务的希望的状态。比如,你可以定义一个由包含消息查询功能的web前端和一个数据库后端组成的应用。
可伸缩:对于每个服务,你可以声明你想要允许的任务(task,应该是运行任务的容器)数量。当你伸缩服务时,集群管理器会通过添加或删除任务来自动到达你期望的状态。
期望状态的保持:集群管理器会不断监控集群状态,并会消除任何实际状态和期望状态之间的差别。比如,如果你设置一个服务允许一个容器的10个副本,然后一个运行着副本中的2个的工作机器挂掉了,管理器会创建两个新的副本来代替挂掉的副本,并会把新的副本分配给正在运行且可用的工作机器。
多主机的网络:你可以为你的服务指定一个overlay式网络。当集群初始化或更新应用时,集群管理器会自动给网络中的容器分配地址。
服务发现:集群管理器会给集群中的每个服务提供唯一的DNS名和运行在容器中的负载、均衡功能。你可以通过集群内置的DNS服务器来查询集群中的每个容器。
负载均衡:你可以把服务的端口暴露给外部的负载均衡器。在内部,集群允许你指定如何在节点间分布服务容器。
默认的安全保证:每个集群中的节点都会开启TLS相互认证(TLS mutual authentication),并会加密它和其他节点间的安全通信。你可以选择是用自定义的root认证还是从常用的rootCA认证。
滚动更新:在首次发布时,你可以递增地把服务发布到节点上。集群管理者允许你控制服务发布到不同节点集之间的延时。如果发布出问题,你可以把服务回滚到上一个版本。
(转自:https://blog.****.net/zlw01234/article/details/79316136) -
Docker Swarm使用
1、环境搭建
(1)、3台Ubuntu系统主机,每台主机上均要安装Docker,并且可以连通网络,且版本必须是1.12及以上,老板本不支持Docker Swarm。
(2)、集群中管理节点的ip地址必须固定,集群中的所有节点都能访问该管理节点。
(3)、集群节点之间必须使用相应的协议并保证以下端口可用:
用于集群管理通信的TCP端口2377;
TCP和UDP端口7946,用于节点间的通信;
UDP端口4789,用于覆盖网络流量。
三台主机名称分别为manager1(管理节点),worker1(工作节点),worker2(工作节点)。
|manager1 :192.168.10.160 |
|network1:192.168.10.161|
|network2:192.168.10.162 |
2、创建Docker Swarm 集群
(1)、在manager1的Docker机器上创建Docker Swarm集群
(2)、在管理节点上,使用docker node ls指令查看集群节点信息
3、向DockerSwarm集群添加工作节点
(1)、启动另外两台Docker机器worker1和worker2
(2)、再次在集群管理节点上使用docker node ls
4、向Docker Swarm 集群部署服务
5、查看Docker Swarm集群中的服务
6、更改Docker Swarm集群服务副本数量
7、删除服务
8、访问服务
(1)、在集群管理节点manager1上,执行docker network ls指令查看网络列表
(2)、在集群管理节点manager1上,创建overlay为驱动的自定义网络
(3)、在集群管理节点manager1上,再次部署服务
(4)、在集群管理节点manager1,使用指令查看服务的两个服务副本运行情况
(5)、外界访问服务
Docker数据管理
-
Volumes 数据卷使用
1、创建并管理数据卷
(1)、创建数据卷
(2)、查看数据卷
(3)、核查数据卷
(4)、删除数据卷
2、启动容器并加载数据卷
(1)、查看本机容器和数据卷(为了避免后续的操作影响,删除原有的数据卷)
(2)、确认查看本机Docker文件系统中的容器和数据卷
(3)、启动容器并挂载数据卷
也可使用-v参数挂载数据卷
(4)、再次查看本机容器和数据卷列表
(5)、检查容器详情
检查devtest2为例:
(6)、再次确认本机Docker文件系统中的容器和数据卷
出现的问题与解决方法
-
访问服务中部署nginx服务后无法在浏览器中查询到,显示无法连接到页面
是因为没有nginx镜像,所以导致失败,使用:
curl sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://27e6d45b.m.daocloud.io
配置加速器,使用docker pull nginx 拉取nginx镜像后再次配置服务即可成功访问页面。