Chinaunix首页 | 论坛 | 博客
  • 博客访问: 507408
  • 博文数量: 158
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 904
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-10 11:17
文章分类

全部博文(158)

文章存档

2018年(74)

2017年(84)

我的朋友

分类: 架构设计与优化

2018-06-07 17:56:10

    1.前言

    容器适用无状态的应用,容器运行时的数据分两部分:镜像层和容器层,镜像层是的数据是永久存储的,而容器的数据随容器的停止也就消失,对于有状态的应用来说(用状态就是应用组件完成他们的工作(即执行任务)时所需的数据。),没有持久化的数据不能支撑应用的正常运行;常用两种方式为有状态的应用提供持久化的数据储存;

本文转自-学领未来

    (1)Volumes

    (2)bind mount

    此外根据场景还可以使用volume container以及tmpfs做为数据存储;

    2.Volume

        卷存储在由Docker管理的主机文件系统的一部分中(Linux上的/var/lib/docker/volumes/)。非Docker进程不应该修改这部分文件系统。卷是在Docker中保留

        数据的最佳方式。

   

    volume的使用场景:

        1.在多个容器之间共享数据

        2.对主机的目录结构不清楚的

        3.当您想要将容器的数据存储在远程主机或云提供商上而不是本地时

        4.当您需要备份,还原或将数据从一台Docker主机迁移到另一台时,卷是更好的选择。您可以使用卷停止容器,然后备份卷的目录

        (例如/var/lib/docker/volumes/

   

    创建volume

        docker volume create canway01

       

    查看volume

        docker volume ls

 

    查看volume的详细信息

        docker volume inspect canway01

       

    删除volume

        docker volume rm canway01

   

    使用volume

        docker volume create canway02

        docker run -ti --name Volume_Test -v canway02:/tmp centos /bin/bash

        //将卷挂在在容器的tmp目录下,如果挂在的卷不存在会自动创建

    

    新建数据文件

        echo Volume_Test>> /tmp/Volume_Test

      

    停止容器查看

        docker inspect Volume_Test |grep mount -i -A 10

             

    再次启动容器,查看数据是否存在

        

    3.bind mount

        绑定安装可能存储在主机系统的任何位置。他们甚至可能是重要的系统文件或目录。 Docker主机或Docker容器上的非Docker进程可以随时修改它们。

      bind mount的使用场景

        1.从主机共享配置文件到容器,/etc下的配置文件,/bin的命令等

        2.进行开发时,在主机和容器中共享源代码

        3.Docker主机的文件或目录结构保证与容器所需的绑定安装一致时

 

    bind mount的使用与volume差别不大,volumedocker自动管理,bindmount需要熟悉的操作员管理;

        新建目录

            mkdir /tmp/D_bindmount 

        挂在使用

            docker run -ti --name BindMount -v /tmp/D_bindmount/:/tmp/D_bindmount centos /bin/bash

             


    最后


        本篇只是简单的介绍volumebind mount的基础使用,在实际的环境因考虑更多复杂的其他因素,:volume随容器的迁移等

阅读(1321) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~