8.容器的数据卷管理

一 准备工作

创建一个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


获取对应容器的ID(f319c2108944)

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

可以看到文件目录已经挂载成功


你可能感兴趣的:(8.容器的数据卷管理)