Docker基础教程七——Docker容器数据卷之命令操作

最后都变了- 提交于 2019-12-18 03:52:30

客官,留下你的赞;成为我的粉丝,一起上车哦!评论区欢迎你的留言

本篇文章将围绕Docker容器数据卷是什么,能做什么、命令操作以及与docker cp的差异进行实例演练。

Docker容器数据卷是什么

简单的一句话:可以理解为Redis中的RDB和AOF文件

Docker容器卷能干什么

  1. 容器的持久化
  2. 容器间的继承
  3. 数据共享

Docker容器卷的操作

容器内添加

  1. 通过命令: docker run -it -v /宿主机的绝对路径:/容器内的目录 镜像名
  2. 通过DockerFile文件添加

下面我们使用通过命令来添加

docker run -it -v /宿主机绝对路径目录:/容器内的目录 镜像名 容器内此目录下的数据文件具有读写权限
  1. 宿主机tmp目录下为空在这里插入图片描述

  2. docker run -it centos 运行centos容器,进去后查看tmp目录下的文件。在这里插入图片描述

  3. exit 终止且退出容器
    在这里插入图片描述
    4.docker run -it -v /tmp/localData:/tmp/containerData centos 注意:-v有新建目录的作用
    在这里插入图片描述
    5.查看宿主机tmp目录下的文件变化。 多出localData目录
    在这里插入图片描述
    6. 查看数据卷是否挂载成功,实现宿主机和容器数据持久化。
    docker inspect 容器ID 查看容器内的内部细节,可看到下面这段配置 在这里插入图片描述
    注意:配置中的RW为true表示容器内挂载的目录下可以进行读写操作,这是默认的设置,后面会讲述怎么修改

    1. 容器内新建demo1.txt文件,里面写上hello world在这里插入图片描述
    2. 查看宿主机 tmp/localData目录下文件变化在这里插入图片描述

    注意

    1. 不管是在宿主机还是在容器内新建、删除、修改文件,彼此之间都会同步。
    2. 关闭(exit)容器,在宿主机上新建或者删除文件,当再次进入容器内时,挂载目录下的数据文件都并没有减少。都是一模一样的。
docker run -it -v /宿主机绝对路径目录:/容器内的目录:ro 镜像名 容器内挂载目录下的数据文件具有读权限
  1. 删除之前新建的demo1.txt文件,通过docker run -it -v /tmp/localData:/tmp/containerData:ro centos进去镜像并实现持久化。由于加了:ro表示容器内/tmp/containerData目录下的文件只能进行操作。容器内其它目录文件权限没有变化。在这里插入图片描述

  2. docker inspect 容器ID 查看数据卷是否挂载成功
    在这里插入图片描述从上面的图片可以看出,数据卷挂载成功,并且容器内/tmp/containerData文件夹下面只能进行读操作

  3. 在容器里中的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就行修改后,容器内挂载额的目录只有读权限,容器和宿主机之间是单项持久化的。

下面一章节,讲述通过DockerFile文件来进行简单的添加

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!