Docker数据管理中的数据卷

在生产环境中使用Docker时,经常需要对数据进行持久化,这就有点像Redis里面的持久性一样的,或者需要在多个容器之间在进行数据共享,这就是Docker中我们说的数据管理操作。

容器中管理数据主要有两种方式:

数据卷(Data Volumes):容器内数据直接映射到本地主机环境;

数据卷容器(Data Volume Containers)使用特定容器维护数据卷;

【数据卷】

数据卷(Data Volumes)是一个可供容器使用的特殊目录,它可以将主机操作系统目录直接映射进容器,类似于Linux中的mount行为。

数据卷可以提供很多有用的特性:

数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便;

对数据卷内数据的修改会立即生效,无论是容器内操作还是本地操作;

对数据卷的更新不会影响镜像,解藕开应用和数据;

卷会一直存在,直到没有容器使用,可以安全地卸载它。

目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中。

1. volumes

Docker管理宿主机文件系统的一部分,默认位于/var/lib/docker/volumes目录中,这是目前使用的最多的方式。

[root@localhost volumes]# ll

总用量 0

drwxr-xr-x. 3 root root 19 8月 29 15:13 037819e6f7ab2b817eddb0053b8b57084fe82ecbc7615caf6ac04cb64765533b

drwxr-xr-x. 3 root root 19 8月 31 16:48 11ff68336fbf30bc7a19476abdffc888c8d7a49cc5a532e277d0a3cac69fa2f6

drwxr-xr-x. 3 root root 19 8月 31 17:44 34be3ff7ac7672d347e96573b050a46d5dab7bf632d7819b098b0cf5a5eabbc5

drwxr-xr-x. 3 root root 19 9月 16 22:56 37f2bdea4eb0de39dc2f73799a0f3acb90ce2365ec5dc7e76a7fd5a45b7069ca

drwxr-xr-x. 3 root root 19 9月 2 15:27 38f8b80456a5fab858343d7293596fada51fa24553840a10a37c6afa5b8e5d77

drwxr-xr-x. 3 root root 19 9月 16 23:30 3ea7a5025a95253e9425ed2d396e73220d947cef489691b05102043395eb56b3

drwxr-xr-x. 3 root root 19 8月 31 10:55 43a32bd680508538987fce798d94b155c82e4cd5b5cf896d74aecfb1bfa0b54a

drwxr-xr-x. 3 root root 19 8月 29 16:31 513ceee578c6ce7ca978998d42b2d7486468f86f865cb4677fc9d299c4cdfe79

drwxr-xr-x. 3 root root 19 8月 29 16:32 9abf06d6768f8c64a61285d672a4351b8d8704baa10e4b97a19b4f737770e2a0

drwxr-xr-x. 3 root root 19 9月 16 23:29 c2a2e7eb9131f0a98741ce058aaa03bde5b1a718b1282cc3b924170db234004b

drwxr-xr-x. 3 root root 19 9月 16 23:07 d8dd50b9cd7bd78810fa1ca51d29b06867492a0a9c6e119a8c444dfce874279b

drwxr-xr-x. 3 root root 19 9月 2 15:25 db3b43b75d088d4573879f5f383660bfa26489d4c54ac83d7b78541884181a9f

drwxr-xr-x. 3 root root 19 8月 30 14:58 e985747a054dc2f884dfab78419b9d5b0f94d2c8367cc7fe8d7e16017f935953

drwxr-xr-x. 3 root root 19 8月 29 23:07 efdb43b34e824cf6bf660e0ed20b3f0b7b5a71029f3cc0e8ce85d80b5a213324

目前所有容器的数据都保存在这个目录下,由于没有创建指定卷,所以Docker帮默认创建了许多匿名卷。

2. bind mounts

表示可以存储在宿主机系统的任意位置,这种方法比较常用。但是bind mount在不同的宿主机系统时不可移植。

3.tmpfs

表示挂载存储在宿主机系统内存中,而不会写入宿主机的文件系统,几乎不用。

a.创建数据卷

Docker提供了volume子命令来管理数据卷,volume子命令的语法格式如下:

docker volume create [OPTIONS] [VOLUME] 

//创建一个自宝义容器卷

root@ubuntu:/var/lib/docker/volumes# docker volume create my-vol

//查看所有容器卷

root@ubuntu:/var/lib/docker/volumes# docker volume ls

DRIVER VOLUME NAME

local badc300c2e02888929999ee56f2653983adc52a06b62e2b86f3a2ce6228b4ae4

local my-vol

//查看指定容器卷详细信息

root@ubuntu:/var/lib/docker/volumes# docker volume inspect my-vol

[

    {

    "CreatedAt": "2021-09-26T08:17:59-07:00",

    "Driver": "local",

    "Labels": {},

    "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",

    "Name": "my-vol",

    "Options": {},

    "Scope": "local"

    }

]

//删除数据卷

docker volume rm my-vol 

b.绑定数据卷

定义好数据卷后,即可以创建一个使用这个数据卷的容器,下面 nginx为例,将数据卷绑定到容器中。将本地的my-vol数据卷挂载到/usr/share/nginx/html目录下。

root@ubuntu:/var/lib/docker/volumes# docker run -it --name=test-nginx -p 80:80 -v local-test-vol:/usr/local/nginx/html nginx

绑定完成后可以通过inspect命令来查看是否绑定成功。

接下来在本地目录/var/lib/docker/volumes/local-test-vol数据卷就可以与容器中的/usr/local/nginx/html目录进行同步数据,进而达到持久化的效果。即不管是在本地数据卷中还是容器中的/usr/local/nginx/html目录中进行修改文件,两个目录的信息都可以互通。

即使如果容器停止了,我们在本地更新文件,再将容器启动也可以实现数据同步。

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

推荐阅读更多精彩内容

  • 容器中的管理数据主要有两种方式: 数据卷(Data Volumes):容器内数据直接映射到本地主机环境;如何在容器...
    xuxw阅读 185评论 0 0
  • 默认情况下,容器内创建的所有文件都存储在可写容器层上。 这意味着: 当容器不再运行时,数据不会持续存在,并且如果另...
    运维开发_西瓜甜阅读 2,431评论 0 12
  • 生产环境中使用docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的...
    wangfs阅读 341评论 0 0
  • Docker数据卷管理器,就是一个一般的容器,专门供其他容器挂载。 首先创建一个名字是dbdata的数据卷容器,创...
    如来自然阅读 381评论 0 1
  • 一、数据卷(Volumes) 数据卷是一个可供一个或多个容器使用的特殊目录。 数据卷可以在容器之间共享和重用 对数...
    snai1阅读 121评论 0 1