使用docker network ls 去列举Docker中所有网络
(1)演示一个bridge的网络管理方式
docker run -itd --name=networktest ubuntu
(2) 使用网络查看指令查看网络详情
1.桥接网络
自定义的基于birdge驱动的网络对于单主机的小型网络不错的选择;但是对于大型网络考虑使用自定义的overlay集群网络
2.Swarm 集群中的覆盖网络
只适用于需要服务的的群集中的节点
3.定制网络插件
1.创建自定义的网络
docker network create --driver bridge isolated_w
2.使用自定义网络管理容器
docker run --network=isolated_w -itd --name=nwtest busybox
3.为容器添加网络管理
docker net work connect bridge nwtest
4.断开容器网络连接
docker network disconnect isolated_w nwtest
5.移除自定义网络
docker network rm isolated_w
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 attach container2进入后 看到容器内部有两个网卡,分别对应着ip地址为172.17.0.5和172.18.0.4
3.容器通信测试
docker attach container1
ping -w 4 172.18.0.4
容器2 可以ping通其他的容器
Docker Swarm是docker原生 的集群管理工具,可以直接从docker客户端创建并管理一个docker集群
1.方便创建和管理集群
2.可拓展
3.急群众多主机网络自动拓展管理
4.提供服务发现功能
5.可负载均衡
6 支持延迟更新和服务回滚
1.准备三台虚拟机
分别安装docker
2.创建集群
docker swarm init --advertise-addr 192.168.56.10(自己的IP地址)
查看默认集群的信息
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
加入集群成功
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
查看五个服务副本在3个节点上的具体分布和运行情况
7.删除服务
docker service rm helloworldswarm
8.访问服务
前面部署的服务没有直接向外界暴露服务端口,外界无法正常访问
与非集群相比 增加了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 nginx
这样子nginx就部署好了
想要了解docker的存储机制,就必须从镜像,容器与数据存储的关系出发
dockerfile包含的指令创建的镜像层是层层叠加的,会在镜像层上面加一个容器层;基于同一个镜像构建的多个容器可以共享该镜像,但是多个容器想要共享相同的数据,需要将数据存储到容器之外的地方。
8.3.1 Docker数据存储方式
volumes 存储与主机文件系统中
bind mounts 存储与主机系统的任意位置
tmpfs mounts 只准出在主机系统的内存中,并没有写入到主机的文件系统中
8.4.1 Volumes数据卷的优势
数据卷比绑定挂载更容易备份和迁移
可以使用Docker CLI和Docker API来管理数据卷
在Linux和Windows容器上可以使用数据卷
在多个容器之间更安全共享数据
8.4.2 Volumes 数据卷使用
1.创建并管理数据卷
docker volume create my-vol
docker volume ls
核查数据卷
删除数据卷
2.启动容器并加载数据卷
(1) 查看本机容器和数据卷
docker ps -a docker volume ls
(2) 启动容器并挂载数据卷
docker run -d -it --name devtest --mount source=my-vol,target=/app busybox:latest
值得一提的是当创建容器的时候数据卷不存在,则docker会自动创建
(3) 检查容器详情
docker inspect 指令查看容器详情。主要查看数据挂载信息
(4)以root用户查看目录里面的containers文件
(本文为微服务架构基础的第八章的笔记)