美文网首页
Docker数据卷的管理

Docker数据卷的管理

作者: 夜醉梦紅尘 | 来源:发表于2019-10-15 19:20 被阅读0次
    1、Docker 持久化存储

    根据前面介绍的容器UnionFS写时复制的特点,可知在容器里增加、删除或修改文件,其实都是对可写层里的文件副本进行了操作。在容器关闭后,该可写层也会被删除,对容器的所有修改都会失效,因此需要解决容器内文件持久化的问题。Docker提供了两种方案来实现:

    把宿主机文件系统里的目录映射到容器内的目录, 如此一来,容器内在该目录里创建的所有文件,都存储到宿主机的对应目录中,在关闭容器后,宿主机的目录依然存在,再次启动容器时还能读取到之前创建的文件,因此实现了容器的文件持久化。当然同时要明白,如果是对镜像自带文件进行了修改,由于镜像是只读的,该修改操作无法在关闭容器时保存下来,除非在修改了文件后构建一个新的镜像。

    把多台宿主机的磁盘目录通过网络联合为共享存储,然后把共享存储中的特定目录映射给特定的容器,这样容器在重启时,还是能读取到关闭前创建的文件。生产环境中常用NFS作为共享存储方案

    2、Docker 挂载时创建卷

    1、Docker 挂载卷

    [root@docker01 ~]docker run -d -p 80:80 -v /data:/usr/share/nginx/html nginx:latest
    079786c1e297b5c5031e7a841160c74e91d4ad06516505043c60dbb78a259d09
    容器内站点目录: /usr/share/nginx/html
    
    

    2、宿主机写入数据验证

    [root@docker01 ~]echo "http://www.qianfeng.com" >/data/index.html
    [root@docker01 ~]curl 10.0.0.100
    http://www.qianfeng.com
    
    3、设置共享卷

    使用同一个卷启动一个新的容器

    [root@docker01 ~]# docker run -d -p 8080:80 -v /data:/usr/share/nginx/html nginx:latest
    351f0bd78d273604bd0971b186979aa0f3cbf45247274493d2490527babb4e42
    [root@docker01 ~]# curl 10.0.0.100:8080
    http://www.qianfeng.com
    
    4、查看卷列表
    [root@docker01 ~] docker volume ls
    DRIVER            
    VOLUME NAME
    

    3、Docker 创建卷后挂载

    1、创建一个简单卷

    [root@docker01 ~] docker volume create
    f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521
    [root@docker01 ~]docker volume ls
    DRIVER            
    VOLUME NAME
    local              
    f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521
    

    2、创建指定卷名的卷

    [root@docker01 ~] docker volume create --name nginx
    [root@docker01 ~] docker volume ls
    

    3、查看卷路径

    [root@docker01 ~] docker volume inspect nginx
    [
     
    {
           "CreatedAt": "2018-02-01T00:39:25+08:00",
           "Driver": "local",
           "Labels": {},
           "Mountpoint": "/var/lib/docker/volumes/nginx/_data",
           "Name": "clsn",
           "Options": {},
           "Scope": "local"
     
    }
    ]
    

    4、创建 Docker 时挂载卷

    [root@docker01 ~] docker run -d -p 9000:80 -v clsn:/usr/share/nginx/html
    nginx:latest
    1434559cff996162da7ce71820ed8f5937fb7c02113bbc84e965845c219d3503
    # 宿主机测试
    [root@docker01 ~]echo 'blog.qf.com'>/var/lib/docker/volumes/nginx/_data/index.html
    [root@docker01 ~]curl 10.0.0.100:9000
    blog.qf.com
    

    5、实现 Docker 共享卷挂载# 共享卷

    [root@docker01 ~]docker run -d -P --volumes-from 079786c1e297 nginx:latest
    b54b9c9930b417ab3257c6e4a8280b54fae57043c0b76b9dc60b4788e92369fb
    --volumes-from # 指定共享卷的容器
    
    

    相关文章

      网友评论

          本文标题:Docker数据卷的管理

          本文链接:https://www.haomeiwen.com/subject/yhfemctx.html