zoukankan      html  css  js  c++  java
  • docker-volume



    容器卷按照业务类型可以分为两大类:

                      无状态(数据不需要持久化)

                      有状态(数据持久化)



    Docker 卷操作

    创建卷(以local模式卷为例)

    方式一直接创建卷:

           [root@localhost ~]# docker volume create myvolume
            myvolume

    方式二创建容器时候创建卷:

          [root@localhost ~]# docker run -d --name=nginx-volume -v /usr/share/nginx/html nginx


    查看卷

    [root@localhost ~]# docker volume ls
    DRIVER              VOLUME NAME
    local               cd7dacfec3b701f4601de4eb29c7992197252d29d7ce14e50cc5401a81d3215a  创建容器的时候直接创建的卷
    local               myvolume


    查看卷详细信息

    [root@localhost ~]# docker volume inspect myvolume
    [
         {
             "CreatedAt": "2020-10-12T10:26:46+08:00",
             "Driver": "local",
             "Labels": {},
             "Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
             "Name": "myvolume",
             "Options": {},
             "Scope": "local"
         }
    ]



    挂载数据卷

    [root@localhost ~]# docker run -d --name=nginx --mount source=myvolume,target=/usr/share/nginx/html nginx

    登录容器器并写入数据

    [root@localhost ~]# docker exec -it  nginx bash
    root@fb2aff3e3d8a:/# echo "11111111" > /usr/share/nginx/html/index.html


    删除容器

    [root@localhost ~]# docker rm -f nginx
    nginx


    重新创建nginx容器挂载之前的卷

    [root@localhost ~]# docker run -d --name=nginx --mount source=myvolume,target=/usr/share/nginx/html nginx
    cecca423928317bd2614f4d9c6ff12dd8de603b29dae30fad20e4bac53abe913
    [root@localhost ~]# docker exec -it  nginx bash

    查看数据依然存在

    root@cecca4239283:/# cat /usr/share/nginx/html/index.html
    11111111


    删除数据卷(必须删除掉使用的容器)

    [root@localhost ~]# docker volume rm myvolume
    myvolume



    容器之间数据共享

    容器1 

    [root@localhost ~]# docker run --mount source=log-vol,target=/tmp/log --name=log-producer -it busybox

    / # cat <<EOF >/tmp/log/mylog.log
    > Hello, My log.
    > EOF
    / # cat /tmp/log/mylog.log
    Hello, My log.


    容器2

    [root@localhost ~]# docker run -it --name consumer --volumes-from log-producer busybox
    / # cat /tmp/log/mylog.log
    Hello, My log.



             Docker 容器的文件系统不是一个真正的文件系统,而是通过联合文件系统实现的一个伪文件系统,而 Docker 卷则是直接利用主机的某个文件或者目录,它可以绕过联合文件系统,直接挂载主机上的文件或目录到容器中。















  • 相关阅读:
    C++ 类
    百练3383:Cell Phone Network
    百练4092:牛仔裤
    百练4091:最近餐馆
    百练4090:超级备忘录
    百练2868:牛顿迭代
    百练2812:恼人的青蛙
    百练2805:正方形
    bzoj1856 [Scoi2010]字符串
    bzoj2096 [Poi2010]Pilots
  • 原文地址:https://www.cnblogs.com/menkeyi/p/13806876.html
Copyright © 2011-2022 走看看