docker基础
01、Docker简介
02、Docker的安装(通过yum安装)
03、Docker安装的问题补充
04、Docker的安装(通过RPM软件包)
05、Docker的安装(通过脚本安装)
06、Docker的卸载
07、Docker配置阿里云镜像加速器
08、Docker中的基本概念和底层原理
09、Docker常用命令(帮助命令)
10、Docker常用命令(镜像命令)
11、Docker常用命令(容器命令01)
12、Docker常用命令(容器命令02)
13、Docker常用命令(容器命令03)
14、Docker安装Nginx
15、Docker图形化管理工具Portainer
16、Docker镜像讲解
17、Docker镜像分层的理解
18、Docker镜像的commit操作
19、Docker容器数据卷介绍
20、Docker容器数据卷的应用
21、Docker中数据卷相关命令
22、Docker数据卷实现MySQL数据持久化
23、DockerFile的方式挂载数据卷
24、Docker数据卷容器的说明与共享数据原理
25、DockerFile文件详解
26、Docker实战:自定义CentOS镜像
27、CMD指令和ENTRYPOINT指令的区别
28、ONBUILD指令介绍
29、COPY指令和ADD指令
30、自定义Tomcat9镜像
31、发布镜像到DockerHub
32、将本地镜像推送到阿里云
33、补充:save和load命令说明
34、Jenkins + Docker + Github 自动部署
本文档使用 MrDoc 发布
-
+
首页
19、Docker容器数据卷介绍
### **1、什么是Docker容器数据卷** Docker容器数据卷,即Docker Volume(卷)。 当Docker容器运行的时候,会产生一系列的数据文件,这些数据文件会在关闭Docker容器时,直接消失的。但是其中产生部分的数据内容,我们是希望能够把它给保存起来,另作它用的。 所以我们期望: - 将应用与运行的环境打包形成容器运行,伴随着容器运行产生的数据,我们希望这些数据能够持久化。 - 希望容器之间也能够实现数据的共享。 根据我们之前所学,Docker容器产生的数据,如果不通过docker commit命令生成新的镜像,把数据做为镜像的一部分保存下来。那么当容器删除后,数据自然也就没有了。但为了能保存Docker容器中的数据,Docker为我们提供了卷技术(Volume)。 **总结:Docker容器中产生的数据,同步到本地,这就是卷技术。也就是通过目录的挂载,将容器内的目录,挂载到Linux系统上面,实现容器数据的持久化。** ### **2、数据卷的作用** 数据卷就是目录或文件,存在于一个或多个容器中,由Docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System(联合文件系统),提供一些用于持续存储或共享数据的特性。 数据卷的设计目的就是为了Doeker容器中数据的持久化,完全独立于容器的生存周期,Docker不会在容器删除时,删除其挂载的数据卷。 数据卷: 1. 数据卷可在容器之间共享或重用数据; 2. 数据卷中的更改可以直接生效; 3. 数据卷中的更改不会包含在镜像的更新中; 4. 数据卷的生命周期一直持续到没有容器使用它为止; ### **3、数据卷的使用** 使用-v参数给容器添加数据卷,Volume(卷)的首字母。 我们以CentOS容器为例进行演示。 **步骤1:下载CentOS镜像。** ```python # docker pull centos [root@192 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 3 months ago 209MB ``` **步骤2:启动CentOS镜像,并挂载数据卷。** 命令:`docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名或镜像ID` 我们希望宿主机/home中的HostDataVolume目录和容器中/home中的ContainerDataVolume目录实现数据卷挂载。 我们先来查看宿主机/home目录的内容,如下: ```python [root@192 ~]# ll /home/ 总用量 0 ``` 没有任何文件。 执行启动CentOS容器命令: ```python # 启动centos容器 [root@192 ~]# docker run -it -v /home/HostDataVolume:/home/ContainerDataVolume centos /bin/bash # 查看centos容器中/home目录中内容 [root@5f63a0fc88c5 /]# ls /home/ ContainerDataVolume # 我们可以看到在centos容器的/home目录里,有ContainerDataVolume目录 # 这个目录肯定是容器启动后,根据 # -v /home/HostDataVolume:/home/ContainerDataVolume创建的。 ``` 我们在来看看宿主机上/home目录的内容,如下: ```python [root@192 ~]# ls /home/ HostDataVolume ``` 发现生成了HostDataVolume文件夹,说明我们数据卷的挂着初步成功。 **提示:挂载的文件夹可以存在也可以不存在,不存在则会自动创建。** **步骤3:验证CentOS容器数据卷是否挂着成功。** 我们可以使用docker inspect命令,来查看CentOS容器的详细数据。 ```python [root@192 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS 5f63a0fc88c5 centos "/bin/bash" 10 minutes ago Up 10 minutes # 查看centos容器的详细数据 [root@192 ~]# docker inspect 5f63a0fc88c5 [ { "Id": "5f63a0fc88c5ef2804a45dff0fbf82ae153f2df04887427a3057668867d64443", "Created": "2021-03-18T11:35:14.632025511Z", ... # 省略 ... # 省略 "HostConfig": { # 主机配置 "Binds": [ "/home/HostDataVolume:/home/ContainerDataVolume" ], ... # 省略 }, ... # 省略 "Mounts": [ # 容器挂载的数据卷 { "Type": "bind", "Source": "/home/HostDataVolume", # 宿主机内地址 "Destination": "/home/ContainerDataVolume", # Docker容器内的地址 "Mode": "", # 两目录就好比同一个目录。 "RW": true, # 支持读写操作 "Propagation": "rprivate" } ], "Config": { ... # 省略 # 新版的Dodker把Volumes信息放到了Mounts的Json字待串里了 "Volumes": null, ... # 省略 } ... # 省略 } ] [root@192 ~]# ``` 看到上面的信息,主要是Mounts属性,说明数据卷挂载已经成功。
李智
2025年3月17日 13:22
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码