Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)

8 Docker中的网络与数据管理

8.1Docker默认网络管理

使用docker network ls 去列举Docker中所有网络

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第1张图片

(1)演示一个bridge的网络管理方式

docker run -itd --name=networktest ubuntu

(2) 使用网络查看指令查看网络详情

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第2张图片

8.1.2 自定义网络介绍

1.桥接网络

自定义的基于birdge驱动的网络对于单主机的小型网络不错的选择;但是对于大型网络考虑使用自定义的overlay集群网络

2.Swarm 集群中的覆盖网络

只适用于需要服务的的群集中的节点

3.定制网络插件

8.1.3 自定义的bridge网络

1.创建自定义的网络

docker network create --driver bridge isolated_w

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第3张图片

2.使用自定义网络管理容器

docker run --network=isolated_w -itd --name=nwtest busybox

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第4张图片

3.为容器添加网络管理

docker net work connect bridge nwtest

4.断开容器网络连接

docker network disconnect isolated_w nwtest

5.移除自定义网络

docker network rm isolated_w

8.1.4容器间的网络通信

1.创建容器

docker run -itd --name=container1 busybox

docker run -itd --name=container2 busybox

docker run --network=isolated_w -itd --name=container3 busybox

docker network connect isolated_w container2

2.容器地址查看

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第5张图片

通过docker attach container2进入后 看到容器内部有两个网卡,分别对应着ip地址为172.17.0.5和172.18.0.4

3.容器通信测试

docker attach container1

ping -w 4 172.18.0.4

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第6张图片

容器2 可以ping通其他的容器

8.2 Docker Swarm集群

Docker Swarm是docker原生 的集群管理工具,可以直接从docker客户端创建并管理一个docker集群

1.方便创建和管理集群

2.可拓展

3.急群众多主机网络自动拓展管理

4.提供服务发现功能

5.可负载均衡

6 支持延迟更新和服务回滚

8.2.2Docker Swarm 使用

1.准备三台虚拟机

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第7张图片

分别安装docker

2.创建集群
docker swarm init --advertise-addr 192.168.56.10(自己的IP地址)
Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第8张图片

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第9张图片

查看默认集群的信息

3.向DockerSwarm集群添加工作节点

To add a manager to this swarm, run the following command:

docker swarm join --token SWMTKN-1-1ra9ujfvc34cpmtii7rvgetpi9vw7cvqa7n9jmw50huiv0oet8-be2ida3oef7jph13a5ykr8uem 192.168.56.10:2377



To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1ra9ujfvc34cpmtii7rvgetpi9vw7cvqa7n9jmw50huiv0oet8-7oy2sgq5b5o1o9xvjvt98awm4 192.168.56.10:2377

image-20220118161702878

加入集群成功

image-20220118161820267

4.向Docker Swarm集群部署服务

docker service create --replicas 1 --name helloworldswarm alpine ping docker.com

服务管理指令是docker service开始的 容器管理指令是docker container 开始的

5.查看Docker swarm集群中的服务

docker service ls

docker service inspect helloworldswarm

docker service ps helloworldswarm

6.更改Docker Swarm集群中的服务副本数量

docker service scale helloworldswarm=5

docker service ps helloworldswarm

image-20220118162445213

查看五个服务副本在3个节点上的具体分布和运行情况

7.删除服务

docker service rm helloworldswarm

8.访问服务

前面部署的服务没有直接向外界暴露服务端口,外界无法正常访问

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第10张图片

与非集群相比 增加了ovarlay为驱动的网络。在集群发布服务的释藏,如果没有指定的网络,那么默认是使用ingress网络经不行连接的,实际开发中,会使 --replicas 驱动网络进行管理服务

(2) manager1 创建自定义网络:

docker network create --driver overlay my-multi-host-network

docker service create --network my-multi-host-network --name my-web --publish 8080:80 --replicas 2 nginxDocker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第11张图片

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第12张图片

这样子nginx就部署好了

8.3 Docker数据管理

想要了解docker的存储机制,就必须从镜像,容器与数据存储的关系出发

dockerfile包含的指令创建的镜像层是层层叠加的,会在镜像层上面加一个容器层;基于同一个镜像构建的多个容器可以共享该镜像,但是多个容器想要共享相同的数据,需要将数据存储到容器之外的地方。

8.3.1 Docker数据存储方式

volumes 存储与主机文件系统中

bind mounts 存储与主机系统的任意位置

tmpfs mounts 只准出在主机系统的内存中,并没有写入到主机的文件系统中

8.4 Volumes数据卷管理

8.4.1 Volumes数据卷的优势

数据卷比绑定挂载更容易备份和迁移

可以使用Docker CLI和Docker API来管理数据卷

在Linux和Windows容器上可以使用数据卷

在多个容器之间更安全共享数据

8.4.2 Volumes 数据卷使用

1.创建并管理数据卷

docker volume create my-vol

docker volume ls

核查数据卷

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第13张图片

删除数据卷

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

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

docker ps -a docker volume ls

image-20220118184243495

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

docker run -d -it --name devtest --mount source=my-vol,target=/app busybox:latest

值得一提的是当创建容器的时候数据卷不存在,则docker会自动创建

(3) 检查容器详情

docker inspect 指令查看容器详情。主要查看数据挂载信息

(4)以root用户查看目录里面的containers文件

Docker中的网络与数据管理(包括Docker Swarm集群以及 Docker数据管理)_第14张图片

(本文为微服务架构基础的第八章的笔记)

你可能感兴趣的:(docker,网络,docker,容器)