Docker 容器数据卷

88 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情

容器数据卷作用

在宿主机,容器及容器之前建立一种文件共享机制

什么是容器数据卷

  • 先来看看Docker的理念:
    • 将应用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的
    • 容器之间希望有可能共享数据

Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。

容器数据卷能做什么

  • 容器数据的持久化

  • 容器之间继承和共享数据

添加数据卷的方式

  1. 直接使用命令添加
  • 语法 docker run -it -v /宿主机目录:/容器内目录 --privileged=true centos /bin/bash

  • 查看容器卷是否挂载成功 docker inspect 容器ID

    image.png

  • 查看容器卷和宿主机的数据共享

    • 在宿主机的mycentos001中创建hello.txt文件并写入数据mycentos001
    • 进入容器查看container001里面有hello.txt文件数据和mycentos001里面的一样
    • 注意:在以上的例子中,默认的只能在宿主机里面写数据。
    • 如果出以下的问题
    • 解决办法:在挂载目录后多加一个--privileged=true参数即可
  • 查看容器停止后,主机修改数据是否同步

    image.png

  • 带权限的处理方式

    image.png

  1. 使用DockerFile添加
  • 在宿主机的根目录下创建mydocker文件夹并进入

    image.png

  • 在当前目录创建一个DockerFile的文件

    image.png

  • 编写DockerFile

    image.png

FROM centos VOLUME ["/dataContainer1","/dataContainer2"] CMD echo "finished,--------success1" CMD /bin/bash

  • build生成一个新的镜像

    • docker build -f /mydocker/DockerFile -t laolei/centos . #注意后面有一个点哦

    image.png

  • 启动容器

    • docker run -it --name='mycentos' laolei/centos
  • 查看容器里面有两个容器卷

image.png

image.png