1、什么是容器数据卷
简单来说就是把Docker容器内的目录挂载到主机对应的目录上,使该两个目录下的数据保持同步
2、使用指定路径挂载数据卷
#选项及解释
-it表示使用交互方式运行容器,能进入容器内部进行内容的查看
-v表示使用数据卷
docker run -it -v 主机目录:容器目录 镜像名称:[TAG]
例:
docker run -it -v /home/ceshi:/home centos:7
3、查看使用数据卷后容器的元数据
docker inspect 容器id
找到Mounts,查看挂载信息,显示成功联通容器指定目录和主机指定目录
进入主机的home目录,发现在主机的home目录下自动生成一个名为ceshi的目录
4、在容器指定目录里新建任意文件,查看数据挂载效果
例:
(1)容器新建文件,主机自动挂载容器指定目录的数据
容器:
新建名为tt .txt的文件
主机:
查看/home/ken目录下的文件,发现容器的tttxt文件同步过来到主机
其他:
1、匿名挂载数据卷
docker -v 容器内路径
例:
#选项及解释
--name="name"参数用于给容器取名字 ,用来区分容器
-d表示容器在后台运行
-p表示指定容器的端口,写法为-p主机端口:容器端口
-v表示使用数据卷
docker run -d -p 3310:3306 --name mysql01 -v /etc/mysql mysql:8.0
2、具名挂载数据卷
docker -v 卷名:容器内路径
例:
#选项及解释
--name="name"参数用于给容器取名字 ,用来区分容器
-d表示容器在后台运行
-p表示指定容器的端口,写法为-p主机端口:容器端口
-v表示使用数据卷
name-mysql就是卷的具体名字
docker run -d -p 3100:3306 --name mysql01 -v name-mysql:/etc/mysql mysql:8.0
3、查看所有的数据卷
docker volume ls
4、查看数据卷的挂载目录
docker volume inspect 卷名
例:
所有docker容器内的数据卷,没指定目录的情况下默认目录都是/var/lib/docker/volumes/卷名/_data
5、改变读写权限(一旦设置了容器权限,容器对挂载出来的内容就有了限定)
只读(只能通过宿主机来操作内容,容器内部无法操作):
#选项及解释
--name="name"参数用于给容器取名字 ,用来区分容器
-d表示容器在后台运行
-P表示指定容器的端口,写法为-p主机端口:容器端口
-v表示使用数据卷
name-mysql就是卷的具体名字
ro全称readonly,表示只读
docker run -d -p 3100:3306 --name mysql01 -v name-mysql:/etc/mysql:ro mysql:8.0
可读可写:
#选项及解释
--name="name"参数用于给容器取名字 ,用来区分容器
-d表示容器在后台运行
-P表示指定容器的端口,写法为-p主机端口:容器端口
-v表示使用数据卷
name-mysql就是卷的具体名字
rw全称readwrite,表示可读可写
docker run -d -p 3100:3306 --name mysql01 -v name-mysql:/etc/mysql:rw mysql:8.0
6、使用Dockerfile进行数据卷挂载
(1)创建一个名为dockerfile的Dockerfile文件,内容如下
#镜像以什么为基础
FROM centos:7
#挂载数据卷(匿名)
VOLUME ["volume01","volume02"]
#挂载数据卷(具名)
#VOLUME [volume01:"volume01",volumeo2:"volume02"]
#输出结束
CMD echo '=========================END====================='
#走的命令
CMD /bin/bash
(2)输入以下命令编译出名为myimage的镜像
#选项及解释
myimage表示镜像名称
-t表示后面是自定义镜像名
docker build -f dockerfile -t myimage .