• docker 第五篇 存储


    镜像概述复习

      Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层

      如果运行中的容器修改了现有的一个已经存在的文件,那改文件将会从读写层下面的只读层复制到读写层,改文件的只读版本仍然存在,只是已经被读写层中改文件的副本所隐藏,此即 “写时复制(COW)” 机制

      因为直接写数据到容器里面有诸多限制,IO较差从而产生了存储卷。

    Volumes存储

      docker存储卷默认使用容器所在的宿主机的目录

      使用Volumes的目的:关闭并重启容器,其数据不受影响;但删除Docker容器,则其变更改将会全部丢失。

      问题:存储于联合文件系统中,不易于宿主机访问;容器间数据共享不便;删除容器数据会丢失

    解决方案: 卷(volumes)

      “卷” 是容器上的一个或多个“目录” 此类目录可让过联合文件系统,与宿主机上的某个目录“绑定”

    volumes 类型:

      docker有两种类型的卷,每种类型都在容器中存在一个挂载点,但其在宿主机上的位置有所不同。

      绑定挂载卷:手动自定挂载点。

      docker管理卷:在容器类指定容器的挂载点,被绑定的是宿主机上的哪个目录,由容器引擎daemon自行创建。

    在容器中使用Volumes

      docker管理卷:

      docker run命令使用-v选项即可使用Volume

      docker run -it -name box1 -v /data busybox

      docker inspect -f {{.Mounts}} box1   查看box1容器的卷、卷标识符及挂载的主机目录

      操作记录:

        docker run --name box5 -it --rm -v /data busybox   会立即在容器的跟目录下创建data  

      绑定卷:

      docker run -it -v HOSTDIR:VOLUMEDIR --name box2 busybox

      操作记录:

        docker run --name box5 -it --rm -v /data/volumes:/data busybox

    复制使用其它容器的卷,为docker run命令使用 --volumes-from 选项

      docker run -it --name box5 -v /data/volumes:/data busybox

      docker run -it --name box6 --rm --volumes-from box5 busybox

  • 相关阅读:
    接口和抽象的区别
    继承-子父类中成员方法特点
    基本类型和引用类型作为参数传递
    大三寒假生活6
    大三寒假生活5
    大三寒假生活4
    大三寒假生活3
    大三寒假生活2
    大三寒假生活指导
    ajax实现文本框的联想功能
  • 原文地址:https://www.cnblogs.com/guniang/p/11613137.html
Copyright © 2020-2023  润新知