Docker中的网络与数据管理

Docker网络管理

  • Docker默认网络管理
    列举Docker中的所有网络
    Docker中的网络与数据管理
    1、创建并启动容器

    Docker中的网络与数据管理
    2、使用网络查看指令查看网络详情

    Docker中的网络与数据管理
    Docker中的网络与数据管理

  • 自定义bridge网络
    1、创建自定义网络
    Docker中的网络与数据管理
    2、使用自定义网络启动容器
    Docker中的网络与数据管理
    进入容器查看:
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    3、为容器添加网络管理
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    4、断开容器网络连接并移除自定义网络
    Docker中的网络与数据管理

  • 容器之间的网络通信
    1、创建容器
    (1)、创建两个使用默认bridge网络的容器
    (2)、创建一个使用自定义的isolated_nw网络的容器(isolated_nw为预先创建的自定义网络)
    Docker中的网络与数据管理
    (3)、为container2容器新增一个自定义的isolated_nw 网络连接
    Docker中的网络与数据管理
    2、容器地址查看
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    3、容器通信测试
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    从以上两个图可以看出,在container2里,使用ping -w 4 ip可以ping通1和3,而使用ping -w 4 容器名 ,container3可以通,container1显示 bad address ‘container1’.
    通过以上分析得出一个结论:不同容器之间想要相互通信,必须在同一个网络环境下,使用默认bridge网络管理的容器可以使用容器ip通信,但无法使用容器名称通信,而使用自定义网络管理的容器可以同时使用ip和容器名称。
    4、默认网络下使用–link参数通过容器名进行通信
    创建容器4:
    Docker中的网络与数据管理
    Docker中的网络与数据管理

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集群
    Docker中的网络与数据管理
    (2)、在管理节点上,使用docker node ls指令查看集群节点信息
    Docker中的网络与数据管理
    3、向DockerSwarm集群添加工作节点
    (1)、启动另外两台Docker机器worker1和worker2
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    (2)、再次在集群管理节点上使用docker node ls
    Docker中的网络与数据管理
    4、向Docker Swarm 集群部署服务
    Docker中的网络与数据管理
    5、查看Docker Swarm集群中的服务
    Docker中的网络与数据管理Docker中的网络与数据管理
    Docker中的网络与数据管理
    6、更改Docker Swarm集群服务副本数量
    Docker中的网络与数据管理
    7、删除服务
    Docker中的网络与数据管理
    8、访问服务
    (1)、在集群管理节点manager1上,执行docker network ls指令查看网络列表
    Docker中的网络与数据管理
    (2)、在集群管理节点manager1上,创建overlay为驱动的自定义网络
    Docker中的网络与数据管理
    (3)、在集群管理节点manager1上,再次部署服务
    Docker中的网络与数据管理
    (4)、在集群管理节点manager1,使用指令查看服务的两个服务副本运行情况
    Docker中的网络与数据管理
    (5)、外界访问服务
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    Docker中的网络与数据管理

Docker数据管理

  • Volumes 数据卷使用
    1、创建并管理数据卷
    (1)、创建数据卷
    Docker中的网络与数据管理
    (2)、查看数据卷
    Docker中的网络与数据管理
    (3)、核查数据卷
    Docker中的网络与数据管理
    (4)、删除数据卷
    Docker中的网络与数据管理
    2、启动容器并加载数据卷
    (1)、查看本机容器和数据卷(为了避免后续的操作影响,删除原有的数据卷)
    Docker中的网络与数据管理
    (2)、确认查看本机Docker文件系统中的容器和数据卷
    Docker中的网络与数据管理
    (3)、启动容器并挂载数据卷
    Docker中的网络与数据管理
    也可使用-v参数挂载数据卷
    Docker中的网络与数据管理
    (4)、再次查看本机容器和数据卷列表
    Docker中的网络与数据管理
    (5)、检查容器详情
    检查devtest2为例:
    Docker中的网络与数据管理
    Docker中的网络与数据管理
    (6)、再次确认本机Docker文件系统中的容器和数据卷
    Docker中的网络与数据管理
    Docker中的网络与数据管理

出现的问题与解决方法