客官,留下你的赞;成为我的粉丝,一起上车哦!评论区欢迎你的留言
本篇文章将围绕Docker容器数据卷是什么,能做什么、命令操作以及与docker cp
的差异进行实例演练。
Docker容器数据卷是什么
简单的一句话:可以理解为Redis中的RDB和AOF文件
Docker容器卷能干什么
容器的持久化
容器间的继承
数据共享
Docker容器卷的操作
容器内添加
通过命令: docker run -it -v /宿主机的绝对路径:/容器内的目录 镜像名
通过DockerFile文件添加
下面我们使用通过命令来添加
docker run -it -v /宿主机绝对路径目录:/容器内的目录 镜像名
容器内此目录下的数据文件具有读写权限
-
宿主机
tmp目录
下为空 -
docker run -it centos
运行centos容器,进去后查看tmp目录
下的文件。 -
exit
终止且退出容器
4.docker run -it -v /tmp/localData:/tmp/containerData centos
注意
:-v有新建目录的作用
5.查看宿主机tmp目录
下的文件变化。多出localData目录
6. 查看数据卷是否挂载成功,实现宿主机和容器数据持久化。docker inspect 容器ID
查看容器内的内部细节,可看到下面这段配置注意:配置中的RW为true表示容器内挂载的目录下可以进行读写操作,这是默认的设置,后面会讲述怎么修改
- 在
容器内
新建demo1.txt
文件,里面写上hello world
- 查看
宿主机 tmp/localData目录
下文件变化
注意
- 不管是在宿主机还是在容器内新建、删除、修改文件,彼此之间都会同步。
- 关闭(
exit
)容器,在宿主机上新建或者删除文件,当再次进入容器内时,挂载目录下的数据文件都并没有减少。都是一模一样的。
- 在
docker run -it -v /宿主机绝对路径目录:/容器内的目录:ro 镜像名
容器内挂载目录下的数据文件具有读权限
-
删除之前新建的demo1.txt文件,通过
docker run -it -v /tmp/localData:/tmp/containerData:ro centos
进去镜像并实现持久化。由于加了:ro
表示容器内/tmp/containerData目录
下的文件只能进行读
操作。容器内其它目录文件权限没有变化。 -
docker inspect 容器ID
查看数据卷是否挂载成功从上面的图片可以看出,数据卷挂载成功,并且容器内/tmp/containerData文件夹下面只能进行读操作
-
在容器里中的
containerData文件夹
下新建一个文件demo1.txt
,出现报错Read-only file system
4.在宿主机中tmp/localData文件夹
下新建、修改、删除文件,数据会同步到容器中的tmp/containerData文件夹下面
。自行操作 试试看
docker run -it -v 宿主机绝对路径目录:容器内目录
和docker cp 容器ID:容器内路径 宿主机路径
的差异
docker cp xxx
是单项的
,只是从容器内拷贝文件到宿主机中
docker run -it -v xxxx
默认容器中挂载的目录具有读写权限
,容器和宿主机之间是双向且持久化
的;但是通过-ro
就行修改后,容器内挂载额的目录只有读权限
,容器和宿主机之间是单项持久化
的。
来源:CSDN
作者:new1024kb
链接:https://blog.csdn.net/qq_34430649/article/details/103581059