Docker学习笔记(Docker中网络与数据管理)
前言
docker默认使用bridge(单主机互联)和overlay(可跨主机互联)两种网络驱动来进行容器的网络管理,其中bridge适用于小型的网络环境,而overlay适用于大型的网络集群
实验步骤
- Docker网络管理
- Docker Swarm集群的搭建及测试
- Volume 数据卷的使用
Docker网络管理
网络的搭建
在进行Docker安装时,Docker就会自动创建三种网络,客户端可以通过网络管理指令进行查看
docker network ls
创建并启动容器(用默认的bridge网络管理方式)
docker run -itd --name = networktest ubuntu
使用代码,查看当前仓库中所有的镜像文件
docker ps -a
如图所示:
后台启动了一个镜像名称为ubtuntu的容器,并为启动后的容器命名为networktest,指令如下:
使用网络查看指令查看网络详情,具体操作指令如下
docker network inspect bridge
自定义网络
Docker中虽然提供了默认网络且使用简单,但为了安全性,更推荐使用自定义的网络进行容器管理
自定义网络分为:
- Bridge networks(桥接网络)
- Overlay network(覆盖网络)
- Custom network plugins(定制网络插件)
自定义bridge网络
在Docker主机上可以使用docker network create来创建网络,指令如下
docker network create --driver bridge isolated_nw
使用自定义网络启动容器
docker run --network=isolated_nw -itd --name=nwtest busybox
并为其容器添加网络管理
docker network connect bridge nwtest
其中isolated_nw是自定义创建的网络,而bridge是之后添加的网络管理
断开容器网络连接
docker network disconnect isolated_nw nwtest
移除自定义网络
docker network rm isolated_nw
容器之间的通信
创建容器
docker run -itd --name =container1 busybox
docker run -itd --name = container2 busybox
执行上述的指令,会创建两个命名为contain1和contain2的容器,使用默认的bridge方式连接网络
创建一个使用自定义的isolated_nw的网络(之前有创建,若果不小心删除,重新创建即可)的容器,指令如下
docker run --network =isolated_nw -itd --name=container3 busybox
为container2容器新增一个自定义的isolated_nw网络连接,指令如下
docker network connect isolated_nw container2
最终,三个镜像之间的关系,如图所示
因此我们可知,Container2可以与Container1,Container3通讯,而Container1和Container3之间不能进行通讯
Container1网络信息
Container2网络信息
Container3网络信息
最终验证
在Container2中ping Container2
Docker Swarm集群的搭建及测试
实验环境
三台运行有Ubuntu 16.04 操作系统的虚拟机,并每台主机中已安装docker环境;
Ip地址说明:
-
manager1 :192.168.43.12
-
worker1 :192.168.43.11
-
worker2 :192.168.43.13
创建Docker Swarm集群
docker swarm init --advertise-addr 192.168.43.12
此时,Docker已经自动在IP为192.168.43.12的住居上,创建了一个Swarm集群,并将该IP设置为一个管理的节点
执行结果验证:
输入命令:
docker node ls
出现结果:
在另外两台主机输入命令
docker swarm join --token ...........
特别注意:该命令是创建swarm之后,系统反馈的命令,是用于worker节点加入到swarm集群的命令,类似于QQ或者微信的面对面建群,通过输入密码信息加入,此处…省略内容即为密码
如果忘记了该命令可以在管理节点使用命令
docker swarm join-token worker
该命令会将命令再度出现
向Docker Swarm集群搭建服务
在集群管理节点上,创建以overlay为驱动的自定义网络,具体操作指令如下:
docker network create --driver overlay my-multi-host-network
上述指令以overlay为驱动,创建了一个名为my-multi-host-network的网络
docker service create --network my-multi-host-network --name my-web \
--publish 8080:80 --replicas 2 nginx
上述部署命令中,–network参数用于指定服务使用自定义的overlay 驱动网络,my-multi-host-network连接;
–name参数用于制定服务启动后的名称;–publish 参数用于映射对外服务端口;–replicas参数用书指定该服务的副本数量
在管理节点上使用命令
docker service ps my-web指令查找服务
最终验证
Docker的数据管理
Volumes数据管理
在Docker主机终端,通过docker volumer create指令创建一个名为my-vol的数据卷
docker volume create my-vol
查看数据卷
docker volume ls
核查数据卷
docker volume inspect my-vol
显示数据卷的详细情况
删除数据卷
docker volume rm my-vol
Volumes使用
查看本机容器和数据卷
docker ps -a
docker volume ls
确认查看本机Docker文件系统中的容器和数据卷
这两个目录就是用于存放用户创建的容器和数据卷的。在没有数据卷时,volumes是空的,没有容器时,containers是空的
启动并挂载数据卷
docker run -d -it --name --mount source=myvol ,target=/app busybox:latest
最终,在volumes和containers中将会出现内容
错误总结
1.问题描述:该错误是因为容器名已经被占用,所以不能使用该名字,如果非要使用这个名字,则可以先将其删除
解决方法:输入命令
docker rm +ID /NAMES
2.问题描述:进入容器时,被拒绝提示说你没有打开容器,但之前已经有过了打开操作
解决方法:这是因为在上一次进入之后,退出时,你输入了 exit 或者退出时直接使用了Ctrl+C
这两种退出方式,实际上是关闭了镜像。所以正确的退出方法因该是Ctrl+P+Q
结束语
本次的实验,主要是针对了Docker网络与存储进行了指令的熟悉,整体内容呈现,但该篇幅过长,下一次书写博客的时候一定注意。希望大家能够喜欢。
上一篇: Docker中的网络和数据管理
下一篇: Docker中的网络配置与数据管理