docker volume

VOLUME场景需求:

1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上。一旦容器删除后,这些数据就没了,除非我们人工备份下来(或者基于容器创建新的镜像)。能否可以让容器进程持久化的数据保存在主机上呢?这样即使容器删除了,数据还在。

2)当我们在开发一个web应用时,开发环境是在主机本地,但运行测试环境是放在docker容器上。这样的话,我在主机上修改文件(如html,js等)后,需要再同步到容器中。这显然比较麻烦。

3)多个容器运行一组相关联的服务,如果他们要共享一些数据怎么办?

对于这些问题,我们当然能想到各种解决方案。而docker本身提供了一种机制,可以将主机上的某个目录与容器的某个目录(称为挂载点、或者叫卷)关联起来,容器上的挂载点下的内容就是主机的这个目录下的内容,这类似linux系统下mount的机制。 这样的话,我们修改主机上该目录的内容时,不需要同步容器,对容器来说是立即生效的。 挂载点可以让多个容器共享。也就是说Volume可以将容器以及容器自身的数据分离开来,这样的话,当你使用docker rmmy_container删除容器时,不会影响相关的数据。

命令:

docker volume create用法:docker  volume  create [OPTIONS] [VOLUME]

创建一个卷-d, --driver指定卷驱动程序名称默认local

--label设置卷的元数据

-o, --opt设置驱动程序的具体选项

docker volume inspect用法:docker  volume  inspect  [OPTIONS] VOLUME [VOLUME...]

显示一个或多个卷的详细信息-f,--format使用给定的Go模板格式化输出


docker volume ls用法:docker volume ls [OPTIONS]

列出卷-f,--filter提供过滤值(例如’dangling=true’)

--format使用Go模板打印输出卷

-q,--quiet只显示卷名称(默认false)

过滤标志(-f或--filter)格式是“key = value”。如果有多个过滤器,则传递多个标志(例如,--filter "foo=bar" --filter "bif=baz")


dangling过滤所有未由任何容器引用的卷

driver过滤卷上的驱动程序名称的全部或部分匹配

LABEL(标签)

label过滤是匹配基础上存在独立的量或值 如下图:


示例:docker volume ls --filter label=cc-date

与标签cc-date进行匹配,而不管其值如何。

NAME名称匹配过滤,是卷的名称全部或部分匹配。

只显示未由任何容器引用卷的名称,如下图:


Go模板的有效占位符如下所示:

.Name网络名字

.Driver网络驱动

.Scope网络范围(本地,全球)

.Mountpoint网络是否为内部、内部挂载点

.Labels分配给卷的所有标签

.Label此卷特定的标签值,例如{{.Label "project.version"}}


docker volume prune用法:docker volume prune [OPTIONS]

修改卷-f,--force不需提示确认

(删除所有未使用的卷)


docker volume rm用法:docker volume rm[OPTIONS] VOLUME [VOLUME...]

删除一个或多个卷-f,--force强制删除一个或多个卷

注意:不能删除容器正在使用的卷。


Volume可以使用下面两种方式创建:

1.在Dockerfile指定VOLUME /some/dir

2.执行docker run -v /some/dir命令指定

创建一个名为volname的数据卷,通过-v参数可以进行创建,同时也可以通过docker volume create来创建。


上面的命令会将/data挂载到容器中,并绕过联合文件系统,我可以在主机上直接操作该目录。

Docker把在/var/lib/docker下的某个目录挂载到了容器内的/data目录下。如果主机上的路径不存在,目录将自动在给定的路径中创建。

也可以直接在主机此文件夹下进行操作:


只要将主机的目录挂载到容器的目录上,那改变就会立即生效.我们可以在Dockerfile中通过使用VOLUME指令来达到相同的目的:


还有另一件只有-v参数能够做到而Dockerfile是做不到的事情就是在容器上挂载指定的主机目录.例如:


这是将宿主机的/tcc/shell目录挂在到容器上的/date/shell目录上。任何在/tcc/shell目录下的文件都会出现在容器内。这对于在主机和容器之间共享文件是很方便、有用的。

为了保证可移植性,挂载主机目录不需要从Dockerfile指定.当使用-v参数时,镜像目录下的任何文件都不会被复制到Volume中.

如果要授权一个容器访问另一个容器的Volume,我们可以使用-volumes-from参数来执行docker run


注意:如果现在停止cc-test,它仍然会启作用,只要有容器连接Volume,他就不会被删除,如果这个时候执行:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容