千家信息网

docker怎么管理容器的数据

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"docker怎么管理容器的数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!管理容器
千家信息网最后更新 2026年11月03日docker怎么管理容器的数据

本篇内容介绍了"docker怎么管理容器的数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

管理容器的数据

可以通过两种方式管理容器中的数据,数据卷(Data Volumns),数据卷容器(Data Volumns containers)

数据卷(Data Volumns)

概念:

data volume存在一个或多个容器中的特殊的目录,它绕过容器的Union File System.用来持久或共享数据.它是独立于容器的生命周期的. 它有几个特点:

  1. 容器创建好后会初始化数据卷.如果基础镜像在此挂载点上有数据,它会将数据复制到数据卷里.(挂在主机的目录则不会复制)

  2. 数据卷可以被多个容器共享使用

  3. 对数据卷的修改是直接的.

  4. 对数据卷的更改,不会因为你更新镜像而被包括进去.

  5. 就算容器被删除,数据卷还继续存在.

添加数据卷

[root@srv00 ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEhippo/nginx         v1                  2e1513eeaa0a        2 days ago          281.1 MBhippo/nginx         v1.10               1e20546f8434        2 days ago          281.1 MB[root@srv00 ~]# docker run -it -v /etc/nginx hippo/nginx:v1.10[root@bab2e5725220 /]# ll /etc/nginx/total 32drwxr-xr-x 2 root root   25 May 20 07:40 conf.d...

可以看到容器内的数据卷目录中,是原有的/etc/nginx目录的内容.

可以修改一个文件配置看看.并检查主机上对应的数据卷内容.

[root@srv00 ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                      PORTS                   NAMESbab2e5725220        hippo/nginx:v1.10   "/bin/bash"              About a minute ago   Exited (0) 15 seconds ago                           hungry_jennings[root@srv00 ~]# docker inspect bab2e5725220...        "Mounts": [            {                "Name": "b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541",                "Source": "/var/lib/docker/volumes/b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541/_data",                "Destination": "/etc/nginx",                "Driver": "local",                "Mode": "",                "RW": true,                "Propagation": ""            }...[root@srv00 _data]# docker rm bab2e5725220bab2e5725220[root@srv00 ~]# cat /var/lib/docker/volumes/b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541/_data/nginx.conf ...

对数据卷的修改直接持久在主机对应的地方..就算容器已经关闭或删除.

挂载主机目录

[root@srv00 ~]# mkdir nginx[root@srv00 ~]# docker run -it -v /root/nginx:/etc/nginx hippo/nginx:v1.10[root@c0750f9779b3 /]# ll /etc/nginx/  <===无内容[root@srv00 ~]# docker ps -lCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                   NAMESc0750f9779b3        hippo/nginx:v1.10   "/bin/bash"              23 seconds ago      Exited (0) 11 seconds ago                               agitated_mclean[root@srv00 ~]# docker inspect c0750f9779b3...        "Mounts": [            {                "Source": "/root/nginx",                "Destination": "/etc/nginx",                "Mode": "",                "RW": true,                "Propagation": "rprivate"            }...

可以看到是主机的对应目录挂载到容器内.RW是可读写标志,效果和mount命令一致.

如果是相对目录:

[root@srv00 ~]# mkdir -p a/b[root@srv00 ~]# touch a/b/c[root@srv00 ~]# docker run -it -v a/b:/etc/nginx hippo/nginx:v1.10                 docker: Error response from daemon: create a/b: "a/b" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.See 'docker run --help'.[root@srv00 ~]# docker run -it -v nginx:/etc/nginx hippo/nginx:v1.10e4e2f137a7412f6474018e88985e2f605b5f77f2cd1ce27280142994e5feb030[root@srv00 ~]# docker inspect e4e2f137a7412f6474018e88985e2f605b5f77f2cd1ce27280142994e5feb030...        "Mounts": [            {                "Name": "nginx",                "Source": "/var/lib/docker/volumes/nginx/_data",                "Destination": "/etc/nginx",                "Driver": "local",                "Mode": "z",                "RW": true,                "Propagation": "rprivate"            }...

主机不可以指定相对目录,只可以对数据卷命名.

当然你可以以只读方式挂载.

[root@srv00 ~]# docker run -itd -v nginx:/etc/nginx:ro hippo/nginx:v1.10b0a67f835eaac812ab37086bef05be6b0726ba080d73113221a5cf8a25bfb513[root@srv00 ~]# docker inspect b0a67f835eaac812ab37086bef05be6b0726ba080d73113221a5cf8a25bfb513...        "Mounts": [            {                "Name": "nginx",                "Source": "/var/lib/docker/volumes/nginx/_data",                "Destination": "/etc/nginx",                "Driver": "local",                "Mode": "ro",                "RW": false,                "Propagation": "rprivate"            }  ...

单独创建数据卷

之前都是通过运行容器的同时创建数据卷.当然也可以先创建好数据卷.然后挂载到容器中使用. 数据卷管理使用docker volume命令.我们看一下刚才创建了哪些数据卷.

[root@srv00 ~]# docker volume lsDRIVER              VOLUME NAMElocal               0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742local               b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541local               nginx[root@srv00 ~]# docker volume inspect 0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742[  {      "Name": "0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742",      "Driver": "local",      "Mountpoint": "/var/lib/docker/volumes/0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742/_data",      "Labels": null  }][root@srv00 ~]# docker volume inspect nginx[  {      "Name": "nginx",      "Driver": "local",      "Mountpoint": "/var/lib/docker/volumes/nginx/_data",      "Labels": null  }]

Driver是local,就是映射到本地主机.也可以使用其他驱动.映射到比如iscsi,NFS,FC 等共享磁盘上.

我们来单独创建一个数据卷并使用

[root@srv00 ~]# docker volume create --name dbdatadbdata[root@srv00 ~]# docker volume lsDRIVER              VOLUME NAMElocal               0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742local               b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541local               dbdatalocal               nginx[root@srv00 ~]# docker volume inspect dbdata[  {      "Name": "dbdata",      "Driver": "local",      "Mountpoint": "/var/lib/docker/volumes/dbdata/_data",      "Labels": {}  }][root@srv00 ~]# docker run -itd -v dbdata:/etc/nginx hippo/nginx:v1.10

数据卷容器(Data Volumns containers)

我们先创建个数据卷容器.然后运行两个单独的容器,挂载数据卷容器.

[root@srv00 ~]# docker create -v /opt --name datastore centose5c37981c4f9e16f92b0d5215f5dfa5f79c86282e3018435a5e380350a5cce2c[root@srv00 ~]# docker ps -lCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMESe5c37981c4f9        centos              "/bin/bash"         11 seconds ago      Created                                 datastore[root@srv00 ~]# docker run -itd --volumes-from datastore --name db1 centos[root@srv00 ~]# docker run -itd --volumes-from datastore --name db2 centos

看看数据是否互相可访问.

[root@srv00 ~]# docker exec -it db1 /bin/bash[root@cd8fa62d3b29 ~]# echo "db111111" > /opt/txt[root@cd8fa62d3b29 ~]# exitexit[root@srv00 ~]# docker exec -it db2 /bin/bash[root@72c21395c72b /]# cat /opt/txt db111111[root@72c21395c72b /]# exitexit[root@srv00 ~]# docker inspect datastore[root@srv00 ~]# docker inspect db1[root@srv00 ~]# docker inspect db2...        "Mounts": [            {                "Name": "6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a",                "Source": "/var/lib/docker/volumes/6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a/_data",                "Destination": "/opt",                "Driver": "local",                "Mode": "",                "RW": true,                "Propagation": ""            }...            [root@srv00 ~]# docker volume inspect 6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a[    {        "Name": "6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a",        "Driver": "local",        "Mountpoint": "/var/lib/docker/volumes/6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a/_data",        "Labels": null    }]

几个容器挂在的数据卷都是相同的.内部其实是创建了一个数据卷. 就算删除所有相关的运行的容器..数据卷不会删除.

"docker怎么管理容器的数据"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 容器 目录 主机 管理 内容 运行 命令 多个 方式 更多 知识 镜像 建好 实用 特殊 相同 一致 学有所成 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 河南云网互联网络科技有限公司 中关村互联网 科技集团 科技金融是不是互联网金融 广州宏创互联网科技 佰商互联网科技有限公司 济南华为互联网科技产业总部基地 随着互联网科技发展 内蒙古九一互联网科技 互联网行业科技股 互联网金融科技名词解释 烟台灵鸽互联网科技有限公司 山东星卡互联网科技有限公司官网 南通创西澳互联网科技有限公司 江苏互联网智能科技软件 扫呗互联网科技有限公司 广西科技产业互联网是什么 北京天晋互联网科技有限公司 玉溪新华互联网科技怎么选 伍佰万互联网科技是干嘛的 苏州找大状互联网科技有限公司 为想互联网科技怎么样 互联网科技保险 互联网金融 科技 齐家互联网科技 互联网养老 桔豆科技 成都玖崟互联网科技有限公司乐商圈怎么样 南山科技园互联网公司有哪些 银川新华互联网科技学校是国营吗 深圳互联网科技园地址
0