Docker02——容器数据卷

4、Docker容器数据卷

4.1 是什么

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

为了能够保存数据在 docker中我们使用

4.2 能干什么

卷 就是目录或者文件,存在于一个或多个容器中,由 docker 挂在到容器,但不属于联合文件系统,因此能够绕过 Union File System 提供一些用于持续存储或共享数据的特性。

卷的设计目的就是数据的持久化,完全独立于容器的生命周期,因此 Docker 不会在容器删除时删除其挂载的数据卷。

特点:

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

4.3 通过命令添加容器卷

命令:

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
例如:docker run -it -v /root/dataVolume:/root/dataVolumeContainer centos

上面的例子中我们把宿主机root路径下的一个文件夹和容器中的一个文件夹捆绑在一起,在创建该镜像时就会在容器中创建对应的文件夹。如下图:

在这里插入图片描述

当然,我们也可以通过 docker inspect 容器ID 查看是否挂载成功。

在这里插入图片描述

容器和宿主机之间共享数据

我们先在 宿主机 中的 dataVolume 文件夹中创建 test.txt ,然后进入容器并打开dataVolumeContainer 文件夹,则可以发现该文件夹中也存在着 test.txt ,这样就实现了共享数据。

在这里插入图片描述

我们还可以在容器中通过 vi test.txt 命令修改 test.txt 文件,同时在宿主机 中就可以看到更改后的test.txt 。如下图:

在这里插入图片描述

容器停止退出后,主机修改了文件内容,重新启动容器时,容器中的文件能否同步?

我们可以先停止该容器 ,然后修改dataVolume 中的 test.txt 文件。再启动该centos容器,并进入容器,可以发现dataVolumeContainer 中的内容也同步更改了。

命令(带只读权限)

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

与普通的命令多了 :ro——>read only

4.4 DockerFile 添加容器卷

  1. 根目录下新建 mydocker 文件夹并进入;

    在这里插入图片描述

  2. 可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷;

  3. File构建

    #volume test
    FROM centos
    VOLUME ["/dataVolumeContainer1", "/dataVolumeContainer2"]
    CMD echo "finished,--------------success1"
    CMD /bin/bash
    
  4. build后生成镜像,生成一个新的镜像yan/contos

    docker build -f /mydocker/Dockerfile -t yan/centos .
    

    注意最后的那个点

在这里插入图片描述

  1. run 创建容器,同时在容器中也可以找到卷目录。

    docker run -it yan/centos
    

在这里插入图片描述

  1. 上面已经看到了创建的2个卷目录,那么对应的主机目录地址在哪里呢?

    我们重新打开一个终端,使用命令 docker inspect 容器ID,可以查看到:

    在这里插入图片描述

验证:在容器的 dataVolumeContainer1 目录中创建test.txt 文件,然后打开对应的主机目录可以看到 test.txt 文件。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值