Docker 存储

  • Docker 存储驱动程序

    Docker有多个存储驱动程序,允许用户使用底层存储设备。下表显示了不同的存储驱动程序以及用于存储驱动程序的技术。
    技术 存储驱动程序
    OverlayFS overlay or overlay2
    AUFS aufs
    Btrfs brtfs
    Device Manager devicemanager
    VFS vfs
    ZFS zfs
    现在让我们讨论一下您将使用各种存储驱动程序的一些优点和实例

    AUFS

    • 这是一个稳定的驱动; 可用于生产就绪的应用程序。
    • 它具有良好的内存使用率,有助于确保容器的平滑Docker体验。
    • 应该考虑与此驱动程序相关的高写入应用场景。
    • 对于平台作为服务类型工作的系统来说,它是很好的选择。

    Devicemapper

    • 这是一个稳定的驱动; 确保顺畅的Docker体验。
    • 该驱动程序适用于测试实验室中的应用程序。
    • 此驱动程序符合主要Linux内核功能。

    BTRFS

    • 此驱动程序符合主要Linux内核功能。
    • 应该考虑与此驱动程序相关的高写入活动。
    • 此驱动程序适用于维护多个构建池的实例。

    Ovelay

    • 这是一个稳定的驱动程序,它符合主要的Linux内核功能。
    • 它具有良好的内存使用率。
    • 该驱动程序适用于测试实验室中的应用程序。

    ZFS

    • 这是一个稳定的驱动程序,它适用于实验室中的测试应用程序。
    • 它对于平台即时服务类型的系统工作很有用。
    要查看正在使用的存储驱动程序,请运行docker info命令。
    语法:
    docker info
    选项:没有
    返回值:提供有关Docker主机上安装的Docker组件的所有相关信息。
    例子:
    sudo docker info
    输出:
    docker container link

    数据卷

    在Docker中,您有一个可以跨容器共享的单独卷。称为数据卷。数据量的一些功能是
    • 它们在创建容器时初始化。
    • 它们可以在许多容器中共享和重用。
    • 可以直接对卷本身进行任何更改。
    • 即使在删除容器后它们也存在。
    我们来看看我们的Jenkins容器吧。让我们做运行ocker inspect,看看这个镜像的细节。我们可以发出<docker inspect命令的输出写入到文本文件,然后相应地查看该文件。
    sudo docker inspect jenkins > tmp.txt
    sudo more tmp.txt
    
    使用more命令查看文本文件时,您将看到一个条目为"JENKINS_HOME=/var/jenkins_home"。
    这是通过Jenkins镜像在容器内完成的映射。
    docker container link
    现在假设您要将容器中的卷映射到本地卷,然后在启动容器时需要指定-v选项。一个例子如下所示
    sudo docker run -d -v /home/demo:/var/jenkins_home/ -p 8080:8080 -p 50000:50000 jenkins  
    
    -v选项用于将容器中的卷/var/jenkins_home映射到Docker主机上的位置/home/demo。
    现在,如果您在启动容器后转到docker主机上的/home/demo位置,您将看到所有容器文件。
    docker container link
    提示: 如果您运行上述命令后,没有查看到容器正在运行,那么可能是您要挂载的目录(/home/demo)docker没有权限执行,我的例子直接给完权限,运行sudo chmod 777 /home/demo

    更改容器的存储驱动程序

    如果要更改为用于容器的存储驱动程序,则可以在启动容器时执行此操作。这可以通过在使用docker run命令时使用-volume-driver参数来完成。下面给出一个例子:
    sudo docker run -d -volume-driver=flocker -v /home/demo:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins
    
    -volume-driver选项用于指定容器中其他存储驱动器。
    docker container link
    然后运行docker ps查看容器id,运行docker inspect 容器id,查看到“VolumeDriver”的值已经被设置成“flocker”

    创建卷

    可以使用docker volume create命令预先创建卷。让我们更多地了解这个命令。
    语法:
    docker volume create --opt options volumename
    选项:
    • volumename - 这是需要创建的卷的名称。
    • opt - 这些是您在创建卷时可以提供的选项。
    返回值:
    该命令将输出创建的卷的名称。
    例子:
    sudo docker volume create demo
    在上面的命令中,我们创建了一个名称为demo的卷。

    列出所有卷

    可以使用docker volume ls 命令列出所有docker卷。
    语法:
    sudo docker volume ls
    例子:
    sudo docker volume ls
    docker container link