Docker 自修笔记(六)—— 示例学习

本博客为JDGan自修Docker的笔记,如有粗鄙之处,还请见谅~

阅读本博客前,请确定了解了以前的blog:
Docker 自修笔记(五)

Docker的数据管理

Data volumes(数据卷)

Data volumes 是一种特别设计的目录,绕开了联合文件系统。

  • Volumes在容器创建时就初始化,如果容器的父映像包含指定的挂载点上的数据,则在卷初始化时将现有数据复制到新卷中。
  • 数据卷可以被容器共享。
  • 可以对数据卷直接进行变更操作。
  • 更新镜像时,数据卷变更不会同步。
  • 就算容器被删了,数据卷还是会保存下来。

添加一个数据卷

Docker通过docker createdocker run添加-v标签来创建数据卷。

$ docker run -d -P --name web -v /webapp training/webapp python app.py

这样就在容器里的/webapp位置创建了一个新的数据卷。

也可以在Dockerfile里使用VOLUME直接添加数据卷。

定位数据卷

需要定位数据卷时,可以直接通过命令查看。

$ docker inspect web

...
"Mounts": [
    {
        "Name": "fac362...80535",
        "Source": "/var/lib/docker/volumes/fac362...80535/_data", //主机地址
        "Destination": "/webapp", //容器
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
]
...

将一个主机目录设置为数据卷

Docker同样可以通过-v标签将已有的主机目录设置为数据卷。

$ docker run -d -P --name web -v /src/webapp:/webapp training/webapp python app.py

其中/src/webapp就是主机目录,加载到容器中/webapp,并运行起来。如果容器中的/webapp已经存在,这个命令不会覆盖,仅仅是在原文件基础上添加一个读写层来运行,在这个数据卷被删除后,原有的文件会恢复访问。

  • 容器目录必须是绝对路径,而主机目录可以是相对或绝对路径。
  • 数据卷的名称name必须符合规则:^[a-z0-9][a-z0-9\.-_]*$
  • 容器绝对路径必须以/开头。

MAC

docker run -v /Users/<path>:/<container path> ...

Windows

docker run -v c:\<path>:c:\<container path>

Virtual machine

虚拟机等文件系统则需要设置文件共享才能使用 -v 命令

可以通过命令来修改数据卷的读写模式

$ docker run -d -P --name web -v /src/webapp:/webapp:ro training/webapp python app.py

也可以通过cached降低数据卷的一致性需求来提高性能

$ docker run -d -P --name web -v /src/webapp:/webapp:cached training/webapp python app.py

安装一个共享数据卷

在容器中创建一个名次数据卷。

$ docker run -d -P \
  --volume-driver=convoy \ //如果不需要使用convoy,可以使用local
  -v my-named-volume:/webapp \
  --name web training/webapp python app.py

直接创建数据卷,附上docker插件。其中传参的方式是o=<key>=<value>

$ docker volume create -d convoy --opt o=size=20GB my-named-volume

$ docker run -d -P \
  -v my-named-volume:/webapp \
  --name web training/webapp python app.py

数据卷标记

标记:z表示数据卷可以背多个容器共享。
标记:Z表示数据卷不能共享,是容器专用的私有卷。

将一个文件挂载为容器数据卷

-v也可以将单个文件挂载到容器作为数据卷。

$ docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash

创建并部署数据卷容器

$ docker create -v /dbdata --name dbstore training/postgres /bin/true

$ docker run -d --volumes-from dbstore --name db1 training/postgres
$ docker run -d --volumes-from dbstore --name db2 training/postgres

$ docker run -d --name db3 --volumes-from db1 training/postgres

如果需要删除容器同时删除挂载的数据卷,则要使用docker rm -v,否则该数据卷就会变为无关联dangling数据卷,可以通过docker volume ls -f dangling=true查询到这些数据卷。

删除数据卷

$ docker run --rm -v /foo -v awesome:/bar busybox top

删除所有没有使用和挂载的数据卷并释放空间:

$ docker volume prune

列出所有数据卷

$ docker volume ls

备份恢复和迁移数据卷

如果需要做到备份恢复和迁移数据卷,将需要用到--volumes-from,举个栗子:

$ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

这个栗子梨,创建了一个新的容器并启动,挂载了dbstore容器的数据卷,部署在本地目录/backup,最后,通过tar备份了dbdata的数据卷到/backup/backup.tar

$ docker run -v /dbdata --name dbstore2 ubuntu /bin/bash

$ docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"

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

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,489评论 0 120
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,743评论 0 7
  • 01 我今年刚好30,比起28 , 29岁时的焦虑,这一年反而过得通透了很多。 不得不说,这个年龄有点尴尬,刚毕业...
    筱潞candy阅读 374评论 0 0
  • 我来了 为了遇见你
    苏昱玮阅读 345评论 0 0
  • 做人 做人智商高不高没关系,情商高不高也问题不大,但做人的格局一定要大,说白了,你可以不聪明,也可以不懂交际,但一...
    真的在听吗阅读 209评论 0 1