一 准备工作
创建一个nginx
[root@instance-x0nj9foj ~]# docker run -d --name="n1" -p 80:80 nginx
a292a1360c332e261e8f9a
进入容器内部
[root@instance-x0nj9foj ~]# docker container exec -it n1 /bin/bash
root@a292a1360c33:/#
修改HTML页面
root@a292a1360c33:/# cd /usr/share/nginx/html/
root@a292a1360c33:/usr/share/nginx/html# ls
50x.html index.html
root@a292a1360c33:/usr/share/nginx/html# echo "test" > index.html
web访问测试
二.手工文件数据交互
1.在宿主机创建测试文件
vim index.html
2.加入测试文字:
test for cp
3.把宿主机文件拷贝到容器里
#docker container cp 目标文件 容器的名字:容器的目录
docker container cp index.html n1:/usr/share/nginx/html
4.把容器里文件拷贝到宿主机
docker container cp n1:/usr/share/nginx/html/50x.html ./
docker container cp 容器名:容器文件地址 宿主机地址
三. volume实现宿主机和容器的数据共享
作用:数据持久化
1.预设一个目录
[root@instance-x0nj9foj ~]# mkdir -p /opt/html
2.创建HTML文件,采用上个例子的HTML文件
cp index.html /opt/html
3. 创建容器时,直接绑定目录(宿主机目录:容器内目录)
docker run -d --name="n2" -p 81:80 -v /opt/html:/usr/share/nginx/html nginx
docker container exec -it n2 /bin/bash
4.修改宿主机的文件,容器内绑定的文件会同时修改
5.看一个例子吧:
开启2个nginx ,端口选择90,91,共同挂载一个数据卷,实现静态资源共享
docker container run -d -p 90:80 --name="nginx_v1" -v /opt/html:/usr/share/nginx/html nginx
docker container run -d -p 91:80 --name="nginx_v2" -v /opt/html:/usr/share/nginx/html nginx
测试访问:
6.查看容器的数据卷的挂载路径:
6.1 查看在启动的容器
docker container ls -a
6.2 获取容器/镜像的元数据。
docker container inspect 容器ID
6.3 查看mounts关键字
Source:宿主机的目录
Destination:容器的挂载目录
四.数据卷容器:
在集群管理中,大批量的容器都需要挂载相同的多个数据卷时,可以采用数据卷容器进行统一管理
专门用一个容器做数据卷,挂载这个数据卷容器
1.宿主机下创建文件模拟数据目录:
mkdir -p /opt/Volume/a
mkdir -p /opt/Volume/b
touch /opt/Volume/b/b.txt
touch /opt/Volume/a/a.txt
2.启动一个数据卷容器:
docker run -it --name="nginx_volume" -v /opt/Volume/a:/opt/a -v /opt/Volume/b:/opt/b centos /bin/bash
交互式容器使可以用ctrl p q退出
3.使用数据卷容器,新启动2个nginx
#nginx_volume为上一步,挂载过文件目录的centos容器
docker container run -d -p 8081:80 --volumes-from nginx_volume --name "http8081" nginxnginx
docker container run -d -p 8082:80 --volumes-from nginx_volume --name "http8082" nginx
4.进入新启动的nginx容器http8081
docker container exec -it http8081 /bin/bash
可以看到文件目录已经挂载成功