一、容器数据卷

  docker 容器数据卷是容器在运行过程中持久化数据的一种方式,卷是目录或文件,存在于一个或多个容器中,由docker 挂载到容器,但不属于联合文件系统,因此能够绕过Union File System  提供一些用于持续存储或共享数据的特性;卷的设计目的就是数据持久化,完全独立于容器的生命周期,因此docker不会在容器删除时,删除其挂载的数据卷。

  特点:

  1. 数据卷可在容器之间共享或重用数据。
  2. 卷中的更改可以直接生效。
  3. 数据卷中的更改,不会包含在镜像中的更新。
  4. 数据卷的生命周期一直持续到没有容器使用它为止。

二、 容器数据卷添加

  1.  直接命令添加
    docker run -it -v /宿主机绝对路径:/容器内目录:权限   镜像名

    权限: ro (容器只能查看)

    例: 启动一个 tomcat 容器 ,在容器 webapps 中增加一份文件,并且增加修改记录。同时宿主机也做相同操作。

      1.1  启动Tomcat容器,执行完此命令后我们已经启动一个tomcat 。

           并且宿主机的/home/webapps目录和容器中的 /usr/local/tomcat/webapps 目录相关联,当这两个目录中的文件会互相同步

    docker run -d -p 8080:8080 --name tomcat-v  -v /home/webapps:/usr/local/tomcat/webapps tomcat

           1.2  在宿主机的 /home/webapps 中创建一个 hello-host.txt 文件,在容器的 /usr/local/tomcat/webapps 目录中也创建一个 hello-tomcat.txt文件,文件内容为文件名。

           (九) Docker 容器数据卷(挂载)

           (九) Docker 容器数据卷(挂载)

          1.3 查看容器中的文件,和宿主机中的文件
           容器中:
           (九) Docker 容器数据卷(挂载)

           宿主机中:

           (九) Docker 容器数据卷(挂载)
          1.4  通过 docker inspect 命令查看挂载信息
           

    docker inspect 72f574d46676

    (九) Docker 容器数据卷(挂载)

     

  2.  docker file 添加,使用 CentOS 演示
    1. 创建一个 Dockerfile 文件
      (九) Docker 容器数据卷(挂载)

       

    2. 编辑文件内容,写入以下信息
      FROM centos
      VOLUME ["/dataVlolumeContainer1","/dataVlolumeContainer1"]
      CMD echo "finished,-----------success"
      CMD /bin/bash

      FROM  来自于一个父类的镜像

      VOLUME  给镜像添加一个或多个容器卷

      CMD  控制台执行的命令

    3.  build   构建镜像
      docker build -f /home/my-docker-file/Dockerfile -t  qizhi/centos  .

      参数:
        -f 指定dockerfile 文件,默认情况下在执行命令的目录下寻找 Dockerfile 文件
      -t 指定镜像名称
      . 在当前目录下生成镜像

      (九) Docker 容器数据卷(挂载)

       

    4. 运行我们自己构建的镜像,并进入镜像,查看我们自己生成镜像时创建的两个文件夹

      启动并进入容器:

      docker run -it qizhi/centos /bin/bash

      (九) Docker 容器数据卷(挂载)

       

    5. 在容器我们构建的两个容器卷中创建一个文件,并写入一些文字。
      (九) Docker 容器数据卷(挂载)

       

    6. 宿主机中查看我们在容器卷中创建的文件,和写入的文件内容。
      注: 可以使用 ctrl + q + P 退出容器,让容器进入后台运行。退回宿主机中

      使用 inspct 命令查看容器信息找到宿主机中相应的容器卷

      docker inspect 1c56ca8581ea

      (九) Docker 容器数据卷(挂载)

       

    7.  查看宿主机中的文件内容

      (九) Docker 容器数据卷(挂载)