返回顶部
首页 > 资讯 > 服务器 >Docker容器数据卷介绍及操作示例
  • 131
分享到

Docker容器数据卷介绍及操作示例

2024-04-02 19:04:59 131人浏览 薄情痞子
摘要

目录容器数据卷介绍什么是数据卷数据卷能做什么?特点Docker 容器数据卷操作直接命令添加数据卷 dockerfile 添加数据卷 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:latest
c0eb80a4425eac21b933ce1a81132eb08eeaaf30ac5adb077d44c11dd7260268
#2、主机和容器的 / 下均自动创建共享的目录
	[root@docker ~]# ll -d /volume
drwxr-xr-x. 2 root root 6 11月  1 23:25 /volume
	[root@docker ~]# docker exec -it $(docker ps -q) ls -ld /containervolume
drwxr-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容器数据卷介绍及操作示例的详细内容,更多关于Docker容器数据卷操作的资料请关注编程网其它相关文章!

--结束END--

本文标题: Docker容器数据卷介绍及操作示例

本文链接: https://lsjlt.com/news/145902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Docker容器数据卷介绍及操作示例
    目录容器数据卷介绍什么是数据卷数据卷能做什么?特点Docker 容器数据卷操作直接命令添加数据卷 dockerfile 添加数据卷 Docker 数据卷容器数据卷...
    99+
    2024-04-02
  • Docker容器数据卷技术介绍
    目录Docker容器数据卷技术介绍一、卷技术介绍二、使用数据卷Docker容器数据卷技术介绍 一、卷技术介绍 现在我们知道docker的理念就是把应用和环境打包成镜像,方便我们去运行...
    99+
    2024-04-02
  • docker中容器数据卷volume介绍
    目录docker 容器数据卷volume使用数据卷方式一:直接使用命令挂载 -v方式二:Dockerfile数据卷容器总结docker 容器数据卷volume 如果数据都在容器中,那...
    99+
    2024-04-02
  • Docker 镜像及容器操作命令介绍
    本文主要讲解安装docker后的基础使用方法以及命令的介绍,主要是docker镜像操作及容器操作命令。 当然,docker的相关命令非常多,可以使用docker help命令查看对应目录以及相关提示命令。Docker镜像操作命令...
    99+
    2023-06-05
  • Docker容器数据卷操作方法是什么
    本篇内容介绍了“Docker容器数据卷操作方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!容器数据卷介绍什么是数据卷将运用与运行的环...
    99+
    2023-06-30
  • docker中容器数据卷volumes的示例分析
    这篇文章主要介绍了docker中容器数据卷volumes的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 数据卷的概念   &...
    99+
    2023-06-04
  • Docker容器卷管理的示例分析
    小编给大家分享一下Docker容器卷管理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!容器卷管理容器卷 主机...
    99+
    2024-04-02
  • Java操作mysql数据库实例介绍
    这篇文章主要介绍“Java操作mysql数据库实例介绍”,在日常操作中,相信很多人在Java操作mysql数据库实例介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java...
    99+
    2024-04-02
  • docker容器通信参数使用及link参数介绍
    目录link机制介绍link使用格式1、link 参数作用2、命令格式3、link原理4、测试案例5、link参数注意事项link机制介绍 同一个宿主机上的多个docker容器之间如...
    99+
    2024-04-02
  • Python函数介绍:hasattr函数的介绍及示例
    Python函数介绍:hasattr函数的介绍及示例在Python中,hasattr()是一个内置函数。它的主要功能是检查一个对象是否有指定的属性或方法,并返回一个布尔值来指示是否存在。这个函数的使用方法非常简单,仅需要提供两个参数:一个对...
    99+
    2023-11-03
    示例 函数介绍 hasattr
  • Python函数介绍:enumerate函数的介绍及示例
    Python函数介绍:enumerate函数的介绍及示例Python是一种高级编程语言,它提供了许多强大的函数,其中一个非常实用的函数是enumerate。这个函数可以帮助我们迭代序列,并返回元素的索引及其值。这篇文章将介绍enumerat...
    99+
    2023-11-03
    示例 Python函数 enumerate函数
  • Python函数介绍:max函数的介绍及示例
    Python函数介绍:max函数的介绍及示例函数在Python编程中是非常重要的概念。Python内置了许多有用的函数,其中一个是max函数。本文将介绍max函数的用法以及示例代码,帮助读者更好地理解和运用。max函数的作用是返回给定参数的...
    99+
    2023-11-03
    Python 函数 max函数
  • Python函数介绍:exec函数的介绍及示例
    Python函数介绍:exec函数的介绍及示例引言:在Python中,exec是一种内置函数,它用于执行存储在字符串或文件中的Python代码。exec函数提供了一种动态执行代码的方式,使得程序可以在运行时根据需要生成、修改和执行代码。本文...
    99+
    2023-11-03
    示例 介绍 exec函数
  • Python函数介绍:zip函数的介绍及示例
    Python函数介绍:zip函数的介绍及示例Python是一种高级语言,它提供了许多有用的函数来帮助开发人员快速地编写程序。其中一个函数就是zip函数。Zip函数是Python中的内置函数之一,它可以接受一组可迭代对象(包括列表、元组、集合...
    99+
    2023-11-03
    示例 介绍 zip函数
  • Python函数介绍:map函数的介绍及示例
    Python函数介绍:map函数的介绍及示例在Python编程中,函数是一种非常重要的工具,可以用来封装一段可复用的代码。其中,map函数是一个强大且常用的函数,它可以对一个可迭代对象中的每一个元素应用一个指定的函数,然后返回一个新的可迭代...
    99+
    2023-11-03
    示例 Python函数 map函数
  • Python函数介绍:delattr函数的介绍及示例
    Python函数介绍:delattr函数的介绍及示例Python作为一门高级的编程语言,拥有丰富的内置函数库,提供了许多方便快捷的函数来进行各种操作。其中之一就是delattr函数。本文将详细介绍delattr函数的作用以及用法,并附上具体...
    99+
    2023-11-03
    Python 介绍 delattr函数
  • Python函数介绍:format函数的介绍及示例
    Python函数介绍:format函数的介绍及示例在Python中,format()函数是一个非常重要且常用的函数,它用于对字符串进行格式化处理。通过format()函数,我们可以将一些变量、数据和文字按照一定的格式拼接在一起,并输出成我们...
    99+
    2023-11-03
    介绍 关键词:Python函数 format函数
  • Python函数介绍:str函数的介绍及示例
    Python函数介绍:str函数的介绍及示例Python是一种简单易学的编程语言,拥有丰富的内置函数来帮助开发者处理数据。其中一个常用的内置函数是str函数。str函数主要用于将其他数据类型转换为字符串类型。str函数的用法如下:str(o...
    99+
    2023-11-03
    Python函数 str 的介绍及示例
  • Python函数介绍:slice函数的介绍及示例
    Python函数介绍:slice函数的介绍及示例Python是一种简单易学、功能强大的高级编程语言,拥有丰富的内置函数和标准库。其中,slice函数是Python中非常实用的一个函数,用于创建一个切片对象,用来切割序列(包括字符串、列表等)...
    99+
    2023-11-03
    示例 Python函数 关键词提取: slice函数
  • Python函数介绍:input函数的介绍及示例
    Python函数介绍:input函数的介绍及示例随着Python语言的快速发展,越来越多的人开始学习和使用Python进行编程。在Python中,函数是一种非常重要的概念,它可以帮助我们将一段代码逻辑封装起来,使得代码更加清晰和易于维护。其...
    99+
    2023-11-04
    示例 Python函数 input函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作