千家信息网

Docker容器数据卷操作方法是什么

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

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

容器数据卷介绍

什么是数据卷

将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求是持久化的。

容器之间希望有可能共享数据。

Docker 容器产生的数据,如果不通过 docker commit 生成新的镜像,使得数据做为镜像的一部分保存下载,那么当容器删除后,数据自然也就没有了。为了能保存数据在 docker 中我们使用卷。

数据卷能做什么?

容器的持久化

容器间继承和共享数据

卷就是目录或文件,存在于一个或多个容器中,由 docker 挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System 提供一些用于持续存储或共享数据的特性。

卷的设计目的就是数据的持久化,完全独立于容器的生存周期因此 Docker 不会再容器删除时删除其挂载的数据卷。

特点

  • 数据卷可在容器之间共享或重用数据

  • 卷中的更改可以直接生效

  • 数据卷中的更改不会包含在镜像的更新中

  • 数据卷的生命周期一直持续到没有容器使用它为止

Docker 容器数据卷操作

直接命令添加数据卷

命令格式

docker run -it -v 宿主机绝对路径:容器内绝对路径 镜像名

案例演示

#1、容器与宿主机主机间文件共享        [root@docker ~]# docker run -itd -v /volume:/containervolume centos:latestc0eb80a4425eac21b933ce1a81132eb08eeaaf30ac5adb077d44c11dd7260268#2、主机和容器的 / 下均自动创建共享的目录        [root@docker ~]# ll -d /volumedrwxr-xr-x. 2 root root 6 11月  1 23:25 /volume        [root@docker ~]# docker exec -it $(docker ps -q) ls -ld /containervolumedrwxr-xr-x. 2 root root 6 Nov  1 15:25 /containervolume#3、验证,在容器内的 containervolume 目录下创建 test 文件,发现主机 volume 目录共享了 test 文件        [root@docker ~]# docker exec -it $(docker ps -q) touch /containervolume/test        [root@docker ~]# ll /volume        -rw-r--r--. 1 root root 0 11月  1 23:29 test#4、退出容器后,主机对 volume 文件进行修改,再次启动容器,发现容器内的 dataVolumeContainer 目录下也同步了 nidaye 文件

dockerfile 添加数据卷

dockerfile 说明

可在 Dockerfile 中使用 VOLUME 指令来给镜像添加一个或多个数据卷

VOLUME["/dataVolumeContainer","/dataVolumeContainer2","/data/VolumeContainer3"]

出于可移植和分享的考虑,用-v 主机目录:容器目录 这种方法不能够直接在 Dockerfile 中实现。由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。

案例演示

#1、在 / 目录下创建 mydocker 文件夹并进入        [root@docker ~]# mkdir /mydocker#2、dockerfile 构建        [root@docker ~]# vim /mydocker/dockerfile        FROM centos:latest        #创建的镜像来自于父镜像 centos        VOLUME ["/volume"]         #在 / 下创建数据卷        CMD echo "create---volume----successl"        #打印数据卷创建成功        CMD /bin/bash#3、build 生成新的镜像 volume/centos        [root@docker ~]# docker build -f /mydocker/dockerfile -t volume/centos .        Sending build context to Docker daemon  519.2MB        Step 1/4 : FROM centos:latest         ---> 0f3e07c0138f        Step 2/4 : VOLUME ["/volume"]         ---> Running in 0059989ef83c        Removing intermediate container 0059989ef83c         ---> 9a7f6ae84e23        Step 3/4 : CMD echo "create---volume----successl"         ---> Running in 9dd2d3fbd75c        Removing intermediate container 9dd2d3fbd75c         ---> 6f8a83b9feca        Step 4/4 : CMD /bin/bash         ---> Running in 18edd4a6af38        Removing intermediate container 18edd4a6af38         ---> 30b4d769d4e8        Successfully built 30b4d769d4e8        Successfully tagged volume/centos:latest        #镜像创建成功#4、使用新镜像启动容器        [root@docker ~]# docker run -itd volume/centos        53d070c79a13dd4ecfe3208a3907cd00e4dc3b1a45c2b890d642cb96b7e05217#5、验证,容器内成功创建目录 volume        [root@docker ~]# docker exec -it $(docker ps -q) ls -ld /volume        drwxr-xr-x. 2 root root 6 Nov  1 16:03 /volume#6、验证,在宿主机上创建文件 test ,容器 /volume 目录成功共享数据        [root@docker ~]# touch /var/lib/docker/volumes/53d070c79a13dd4ecfe3208a3907cd00e4dc3b1a45c2b890d642cb96b7e05217/_data/test        #宿主机数据卷默认挂载目录        [root@docker ~]# docker exec -it $(docker ps -q) ls -l /volume        -rw-r--r--. 1 root root 0 Nov  1 16:12 test

Docker 数据卷容器

数据卷容器简介

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

案例演示

启动一个 centos_1 容器并挂载数据卷

        [root@docker ~]# docker run -itd --name="centos_1" -v /volume:/volumecontainer_1 centos         9f73357be614f7c5098b2ef3a83534002992ee2f281b8b984ed7af5c03a7e29b#宿主机 /volume 下创建文件 test        [root@docker ~]# touch /volume/test#验证,容器 centos_1,/volume/container_1/下共享文件 test        [root@docker ~]# docker exec -it $(docker ps -q) ls -l /volumecontainer_1        total 0        -rw-r--r--. 1 root root 0 Nov  2 14:33 test

启动一个 centos_2 容器并继承容器 centos_1 的文件

        [root@docker ~]# docker run -itd --name="centos_2" --volumes-from centos_1 centos        baefc86b170c376745761aaea1abc0843521b272213337109510170ff1ccb304#验证,容器 centos_2 继承了容器 centos_1 的文件        [root@docker ~]# docker exec -it $(docker ps -n 1 -q) ls -l /volumecontainer_1        total 0        -rw-r--r--. 1 root root 0 Nov  2 14:33 test#验证,在容器 centos_2 中添加文件,宿主机和容器 centos_1 都能共享        [root@docker ~]# docker exec -it $(docker ps -n 1 -q) touch /volumecontainer_1/test_centos_2#宿主机成功共享文件 test_container_2        [root@docker ~]# ls -l /volume/        总用量 0        -rw-r--r--. 1 root root 0 11月  2 22:33 test        -rw-r--r--. 1 root root 0 11月  2 22:42 test_centos_2#容器 centos_1成功共享文件 test_container_2        [root@docker ~]# docker exec -it 9f73357be614 ls -l /volumecontainer_1        total 0        -rw-r--r--. 1 root root 0 Nov  2 14:33 test        -rw-r--r--. 1 root root 0 Nov  2 14:42 test_centos_2

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

容器 数据 文件 目录 宿主 镜像 宿主机 成功 验证 主机 案例 方法 之间 周期 演示 运行 内容 可在 命令 多个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器在哪里租 北京移搜网络技术有限公司 怎么重置阿里云服务器 数据库需要安装数据库服务器吗 modbustcp多服务器连接 浙江运营软件开发哪家好 关于网络安全课堂的总结800字 网络安全防护主要是什么工作 服务器交换机怎么维护 数据库维护计划不能使用 数据库会给我们带来什么改变呢 企鹅电竞的服务器宝贝 数据库如何建有外键的表 未安装服务器管理器 数据库中数值为8的数据类型是 网络安全认证收费标准 广东深圳直销软件开发 小伙伴课件软件开发 三门峡软件开发优缺点 服务器主要解决客户什么问题 我的世界服务器断网器刷东西 腾讯安全风险二维码数据库更新 河南般若网络技术有限公司 软件开发个体户 命名 海南互联网软件开发计划 著名的网络安全开放论坛 佛山网络安全事件 社交网络安全创业计划书营销计划 excel服务器 魂师对决忘记角色服务器怎么办
0