dockerfile中volume的用法

news/2024/10/9 15:11:26

当您使用 VOLUME 指令指定一个目录时,Docker 会为该目录创建一个数据卷。这个卷可以在容器停止或删除后仍然存在

Dockerfile

FROM ubuntu:latest# 创建一个数据卷
VOLUME ["/data"]CMD ["sleep", "3600"]

构建镜像,并运行容器

docker build -t ubuntu:test1 .
docker run -itd --name test1 ubuntu:test1  
docker exec -it test1 bash
在/data目录下执行echo "hello test1" > 1.txt

检查容器

docker inspect test1, 找到Mounts相关内容
...
"Mounts": [{"Type": "volume","Name": "07cd438d4131b4c11e153f1bb3aff1f6c35976a723db6e7d200f1c28fbb7fb1e","Source": "/var/lib/docker/volumes/07cd438d4131b4c11e153f1bb3aff1f6c35976a723db6e7d200f1c28fbb7fb1e/_data","Destination": "/data","Driver": "local","Mode": "","RW": true,"Propagation": ""}],
...

查看docker volume信息, 可以找到上面test1容器对应的volume挂载卷07cd438d4131b4c11e153f1bb3aff1f6c35976a723db6e7d200f1c28fbb7fb1e

docker volume ls
DRIVER    VOLUME NAME
local     1d0e6860cdccfd6b9955f6b979f301c45dc4215df0157fb2e5278fe082be9497
local     2f603d844fd91029242b16276aed6b1eeb6a49b8caca65c35ed7892f0e58a702
local     07cd438d4131b4c11e153f1bb3aff1f6c35976a723db6e7d200f1c28fbb7fb1e
local     9c38b79f02b7584cf2b36cc00745d2ca872bc840d669b6d9dce937d46ded0602
local     017b982e91da6fda2d80a36c958071ba2ed47fc9041d2639b651370625d394fc
local     106e137074264812e094703d0ab64141b01076b562d10f86a35c678cc91dbe76
local     02106d7f5fba6130ac6c148007d2b50be092867ab59e8497af214711d133b28e

新建容器,使用原先的挂载卷

docker stop test1
docker rm test1
docker run --rm -it -v 07cd438d4131b4c11e153f1bb3aff1f6c35976a723db6e7d200f1c28fbb7fb1e:/data ubuntu:test1 /bin/bash
验证下/data目录下是否存在之前创建的1.txt数据

注意:

如果运行容器使用下面命令添加参数-v时,使用docker inspect 容器名就找不到Type: volume挂载卷的信息了, 而是Type: bind的相关信息

docker run -itd --name test2 -v ./data:/data ubuntu:test2
docker inspect test2
...
"Mounts": [{"Type": "bind","Source": "/root/test/data","Destination": "/data","Mode": "","RW": true,"Propagation": "rprivate"}],

说明

Type:bind - 表示这是一个绑定挂载,意味着将宿主机上的目录直接挂载到容器内。
Source:/root/test/data - 这是宿主机上的路径,数据存储在这里。
Destination:/data - 这是容器内的路径,挂载到这个路径。
RW:true - 表示该挂载是可读写的。
Propagation:rprivate - 指定了挂载的传播行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/69398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【 java 安全】Java对象都是堆上分配?看完Java中对象逃逸分析就知道答案了

原创 龙虾编程随着JIT编译期的发展与逃逸分析技术逐渐成熟,所有的对象都分配到堆上也渐渐变得不是一定的。在编译期间JIT会对代码做很多优化,其中有一部分优化是减少内存堆分配压力,这里有一种重要的技术叫逃逸分析。逃逸分析是一种可以有效减少Java程序中同步负载和内存堆分…

【SQL SERVER】PIVOT与UNPIVOT之行列转换

基础例子 在数据处理的过程中,常常遇到行列转换的问题。例如,人员的考勤。可能表格中,1~12月都在同一个字段,实际中,为了查看方便,同一个人的考勤记录,能在同一行,这样查询起来比较方便(行转列)。或者,表格设计的时候就是1~12月,在其他数据分析时需要将列转行。即类…

SkyWalking组件自定义链路追踪

SkyWalking组件通过添加相关配置就可以获取到接口的相关信息,更加方便的追踪和处理问题 接下去讲下步骤: 1、在service层添加两个注解;@Trace@Tags({@Tag(key = "getDataByCode",value = "returnedObj"),@Tag(key = "getDataByCode",value = …

沈师傅食品携手纷享销客CRM系统,加速数字化转型

沈师傅食品有限公司是一家专业研发、生产和销售鸡蛋干系列产品的大型集团 公司,技术与研发实力雄厚,先后获得多项国家专利。公司成立于2006年,开创 了全新的鸡蛋干品类,创办人沈国平先生素有“鸡蛋干之父”之称,先后被央视、 四川电视台、北京卫视、优酷、凤凰网等国内知名…

总奖金高达10万元!华为算法精英实战营“亲和任务调度系统”来啦!

在无线领域,利用AI技术对任务准确建模、多核系统任务最优调度等问题都是非常有价值的算法难题。随着物联网、大数据、AI时代的到来,时延、可靠性等指标要求越来越高,海量的数据分析、大量复杂的运算对CPU的算力要求越来越高。CPU内部的大部分资源用于缓存和逻辑控制,适合运…

高产胜那啥,带你上线我的新项目!

希望大家能通过这个项目掌握企业级项目的开发、优化和上线方法,得到全方面编程技能和程序员素养的提升。大家好,我是程序员鱼皮。9月,我处于极度爆肝状态,成功完结了最新带大家做的项目 面试刷题平台 。当我们做完一个项目后,一定要记得把项目上线,这样才算是完成了学习的…

webapi 创建(空)

1. 打开vs2019 ,选择创建新项目2. 选择ASP.NET Web 应用程序(.NET Framework)3. 配置项目信息(名称,位置,框架)4. 选择空模板(WebAPI复选框选中)5. 这样里面就没有MVC的三层,因为前后端分离,webapi中只有两层。6. 空的WebApi程序创建完成。

.NET 代码混淆工具-JIEJIE.NETWX

阅读目录前言 项目介绍 项目功能 项目效果:蓝猫机场 项目地址 最后前言 JIEJIE.NET是一款强大的开源.NET程序集混淆工具。它利用深度加密技术和多样化的混淆策略,有效地保护了.NET软件的版权和源代码安全,防止未经授权的访问和篡改。 项目介绍 JIEJIE.NET是一个用C#开发的开源…