美文网首页GISDocker容器部署运维
跟我学Docker:docker数据卷存储(六)

跟我学Docker:docker数据卷存储(六)

作者: 为道日损_原创笔记 | 来源:发表于2019-10-10 17:59 被阅读0次

    容器一般是用来封装打包软件,源码等环境配置的,而且重启一个容器很简单,所以容器经常被删除,因此不会轻易将数据或文件放在容器中,这时我们会在宿主机的某个地方或空间挂在到容器指定的位置,这就是容器的数据卷。

    数据卷的作用:

    1:持久化容器运行过程中产生的数据文件
    2:实现多个容器间的文件共享。
    正常情况下,删除容器,容器中所有的文件也会被删除。
    创建一个数据卷 :docker volume create
    查看数据卷列表 :docker volume ls
    删除一个数据卷 :docker volume rm
    查看一个数据卷的属性 : docker volume inspect

    [root@docker01 ~]# docker volume create fxw
    fxw
    [root@docker01 ~]# docker volume ls
    DRIVER              VOLUME NAME
    local               fxw
    [root@docker01 ~]# docker volume inspect fxw
    [
        {
            "CreatedAt": "2019-07-24T14:08:11+08:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/fxw/_data",
            "Name": "fxw",
            "Options": {},
            "Scope": "local"
        }
    ]
    [root@docker01 _data]# 
    

    启动容器并将数据卷fxw挂载到nginx容器中:
    -v fxw:/usr/share/nginx/html ,指定数据卷名称:容器指定目录

    [root@docker01 _data]# docker run -d -p 80:80 -v fxw:/usr/share/nginx/html nginx:latest
    1097890e5c43d57ffe2cd3c67ab05172151ffaba1dbd5680b0be703aa4d4b1cf
    [root@docker01 _data]# docker ps -a -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
    1097890e5c43        nginx:latest        "nginx -g 'daemon of…"   10 seconds ago      Up 9 seconds        0.0.0.0:80->80/t
    [root@docker01 _data]# docker volume inspect fxw
    [
        {
            "CreatedAt": "2019-07-24T14:12:35+08:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/fxw/_data",
            "Name": "fxw",
            "Options": {},
            "Scope": "local"
        }
    ]
    

    通过查看数据卷fxw,可以发现数据卷fxw在宿主机上的真实地址为:/var/lib/docker/volumes/fxw/_data,相当于将改地址挂载到容器nginx的/usr/share/nginx/html目录,这是我们去改变/var/lib/docker/volumes/fxw/_data中的内容,先删除旧的文件,然后放入编写好的网页index.html,然后访问10.0.0.11:

    old page
    image.png
    new page
    image.png

    因此nginx的数据放在宿主机的数据卷fxw上,这样既保证了数据的安全,又给开发人员提供了方便,同时当你部署分布式集群时,又能起到文件共享的作用,一举多得。

    如果是集群共享,我们就不用每次都指定数据卷的路径,这里还有一个命令:
    --volumes-from containerName 表示与容器containerName保持一致的数据卷,也是fxw数据卷(这里指定81端口映射到容器80端口)

    [root@docker01 _data]# docker run -d -p 81:80 --volumes-from elegant_ardinghelli nginx:latest
    2860f3a057d861105ab996732029f22af392e0a04d841fc41726f6893f1f4a78
    [root@docker01 _data]# 
    
    image.png

    上面已经对数据进行了持久化,此时删掉容器,数据依然在宿主机。

    [root@docker01 _data]# docker rm -f `docker ps -a -q`
    2860f3a057d8
    1097890e5c43
    e4e1264fa87c
    c1288955af2a
    [root@docker01 _data]# docker volume inspect fxw
    [
        {
            "CreatedAt": "2019-07-24T14:12:35+08:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/fxw/_data",
            "Name": "fxw",
            "Options": {},
            "Scope": "local"
        }
    ]
    [root@docker01 _data]# ll /var/lib/docker/volumes/fxw/_data/
    total 4
    -rw-r--r-- 1 root root 3094 Jul 23 16:41 index.html
    [root@docker01 _data]# 
    

    除了采用数据卷的方式挂载之外,还可以直接挂载宿主机目录(90端口):

    [root@docker01 abc]# docker run -d -p 90:80 -v /opt/abc/:/usr/share/nginx/html nginx:latest
    52bfde2cbef6171594e7f8b7dc2ac859b22b4a8e3a13a380c7b1ffedab35fddc
    [root@docker01 abc]# ll
    total 4
    -rw-r--r-- 1 root root 3094 Jul 23 16:41 index.html
    [root@docker01 abc]# 
    
    image.png

    相关文章

      网友评论

        本文标题:跟我学Docker:docker数据卷存储(六)

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