Docker中的网络与数据管理
Docker网络管理
一.Docker默认网络管理
列举Docker中的所有网络
–docker network ls
(1)创建并启动容器
–docker run -itd --name=networktest ubuntu
(2)使用网络查看指令查看网络详情
–docker network inspect bridge
二.自定义bridge网络
1.创建自定义网络
–docker network create --driver bridge isolated_nw
2.使用自定义网络启动容器
–docker run --network=isolated_nw -itd --name=nwtest busybox
使用网络查看指令查看启动后的容器网络详情
–docker inspect nwtest
3.为容器添加网络管理
–docker network connect bridge nwtest
使用网络查看指令查看启动后的容器网络详情
–docker inspect nwtest
4.断开容器网络连接
–docker network disconnect isolated_nw nwtest
5.移除自定义网络
–docker network rm isolated_nw
三.容器之间的网络通信
1.创建容器
(1)创建两个使用默认的bridge网络的容器
–docker run -itd --name=container1 busybox
–docker run -itd --name=container2 busybox
(2)创建一个使用自定义的isolated_nw网络的容器
–docker run --network=isolated_nw -itd --name=container3 busybox
(3)为container容器新增一个自定义的isolated_nw网络连接
–docker network connect isolated_nw container2
2.容器地址查看
首先,进入container2容器
–docker attach container2
然后,使用ifconfig指令查看当前容器被动态分配的IP地址
进入container1容器,使用ifconfig指令查看当前容器被动态分配的IP地址
–docker attach container1
进入container3容器,使用ifconfig指令查看当前容器被动态分配的IP地址
–docker attach container3
3.容器通信测试
首先,进入container1容器,使用ping指令连接container2和container3来查看是否能通信
接着,进入container2容器,使用ping指令连接container1和container3进行通信测试,效果如图所示
Docker Swarm集群
一.Docker Swarm的使用
1.环境搭建
(1)准备三台Ubuntu系统主机
(2)集群管理节点Docker机器的IP地址必需固定,集群中的所有节点都能访问管理结点
manager1
worker1
worker2
(3)集群节点之间必需使用相应的协议并保证以下端口号可用
2.创建Docker Swarm集群
(1)在名为manager1的Docker机器上创建Docker Swarm集群
–docker swarm init --advertise-addr 192.168.197.143
(2)在管理节点上,使用指令查看集群节点信息
–docker node ls
3.向Docker Swarm集群添加工作节点
(1)启动另外两台Docker机器work1和work2,分别打开终端窗口,然后向集群中加入工作节点的指令
–docker swarm join --token
SWMTKN12arykxeyru8qruxwhjpjv1lsy9tgnk1q4f9qx598pqxsv9t6cq-5phvvmqxxvq9ttji31b3eu30v 192.168.197.143:2377
(2)再次在集群管理节点上使用指令查看集群节点信息
–docker node ls
4.向Docker Swarm集群部署服务
拉取镜像
–docker pull alpine
使用Docker上自带的alpine镜像为例来部署集群服务
–docker service create --replicas 1 --name helloworld alpine ping docker.com
5.查看Docker Swarm集群中的服务
(1)服务部署完成后,在管理节点上查看当前集群中的服务列表信息
–docker service ls
(2)查看部署的服务具体详情
–docker service inspect helloworld
(3)查看指定服务在集群节点上的分配和运行情况
–docker service ps helloworld
6.更改Docker Swarm集群服务副本数量
在管理节点manager1上,更改服务副本数量
–docker service scale helloworld=5
查看这5个服务副本在3个节点上的具体分布和运行情况(状态都是Running)
–docker service ps helloworld
7.删除服务
–docker service rm helloworld
8.访问服务
(1)在集群管理节点manager1上,查看网络列表
–docker network ls
(2)在集群管理节点manager1上,创建以overlay为驱动的自定义网络(my-multi-host-network)
–docker network create
–driver overlay
my-multi-host-network
(3)在集群管理节点manager1上,再次部署服务
–docker service create
–network my-multi-host-network
–name my-web
–publish 8080:80
–replicas 2
nginx
(4)在集群管理节点manager1上,查看服务的两个服务副本运行情况
–docker service ps my-web
(5)外界访问服务(IP+8080)
二.Volumes数据卷管理使用
1.创建并管理数据卷
(1)创建名为my-vol的数据卷
–docker volume create my-vol
(2)查看数据卷
–docker volume ls
(3)核查数据卷
–docker volume inspect my-vol
(4)删除数据卷
–docker volume rm my-vol
2.启动容器并加载数据卷
(1)查看本机容器和数据卷
–docker ps -a
–docker volume ls
(2)认查看本机Docker文件系统中的容器和数据卷
–cd /var/lib/docker
–ll
(3)启动容器并挂载数据卷
–docker run -d
-it
–name devtest
–mount source=myvol,target=/app
busybox:latest
(4)再次查看本机容器和数据卷列表
–docker ps
–docker volume ls
(5)检查容器详情
–docker inspect myvol
(6)再次确认本机Docker文件系统中的容器和数据卷
–cd /var/lib/docker/
–cd containers/
–ll
–cd …
–cd volumes/
–ll
出现问题:
1.使用自定义网络启动容器时出现错误,没有”busybox:lastest”镜像
2.不能进入container容器内部
3.使用Docker上自带的alpine镜像为例来部署集群服务之前要拉取镜像,拉取镜像时出现问题
解决方案:
1.连接的网络不好,更换网络即可
2.第一次退出时“ctrl+c”为退出并关闭,重新开启容器即可
3.连接的网络不好,更换网络即可
作者:胥自扬