首页 > 其他分享 >dockerfile中volume的用法

dockerfile中volume的用法

时间:2024-10-09 14:59:37浏览次数:8  
标签:test1 dockerfile local 用法 volume 挂载 docker data

当您使用 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 - 指定了挂载的传播行为。

标签:test1,dockerfile,local,用法,volume,挂载,docker,data
From: https://www.cnblogs.com/regit/p/18454239

相关文章

  • TFS命令 TF:undo(强制撤销签出文件) 用法
    1.在命令行中输入"CD C:\ProgramFiles(x86)\MicrosoftVisualStudio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\TeamExplorer\"(TF.EXE程序在文件夹),进入TF程序所在目录。或者配置环境变量PATH,如下图:2.查找指定用户用到的工作区,操作如下:TF......
  • 'in fact'的用法和位置
    'infact'的用法和位置'infact'是一个介词短语,通常用于强调某个事实或观点,或者对前面提到的信息进行修正或补充。它可以在句子中作为状语使用,位于句首、句中或句末。'infact'的具体例子‌强调事实‌:Infact,IenjoyedthemoviemorethanIthoughtIwould.(事实上,我比预......
  • @Scheduled定时任务常用用法
    1.cron参数这个参数是最经常使用的参数,表示接收一个cron参数,cron它是一个表达式,最多接收7个参数,从左到右分别表示:秒分时天月 周年;参数以空格隔开,其中年不是必须参数,可以省略。注意!!!在使用时需要在类上添加注解@EnableScheduling,表示开启定时任务。常用通配符:*:表示所......
  • css选择器用法
    1.元素选择器(标签选择器)元素名称{} 2类选择器以点开头{}3.id选择器器以#号开头4.后代选择器空格分隔5.子类选择器>大于号分隔6.相邻兄弟选择器+连接选择与指定元素在同一层级且紧接在它后面的元素(只有一个)。h2+......
  • tmux 用法
    tmux(terminalmultiplexer)是一个终端多路复用器,它允许你在一个终端会话中运行多个终端会话,并在不同的SSH会话之间保持连接。以下是如何使用tmux来启动和管理持久化的会话:启动一个新的tmux会话:tmuxnew-session-smysession这里-smysession是可选的,用于命名你的会......
  • 前端媒体查询的用法及案例
    媒体查询:实现响应式设计的强大工具在数字时代,网页必须适应各种设备和屏幕尺寸,以满足用户不断变化的需求。这就是响应式设计的重要性所在,而媒体查询(MediaQueries)则是实现这一目标的强大工具。本文将深入探讨媒体查询的原理、用法以及它如何帮助设计师和开发者创建灵活、适......
  • @ImportResource用法
    用法@ImportResource注解用于导入Spring的配置文件,让某个配置文件中的bean生效;SpringBoot里没有Spring的配置文件,自己可以手动编写配置文件,但SpringBoot不能自动识别,此时需要在配置类中引入编写的配置文件注意:这个配置文件生效需要放在配置类上!!举个例子:测试SpringBoo......
  • 关于filter数据的用法
    fromrest_framework.filtersimportBaseFilterBackendclassMenuFilterBackend(BaseFilterBackend):deffilter_queryset(self,request,queryset,view):ifrequest.method=="DELETE":returnquerysetfolder=reque......
  • 1068:与指定数字相同的数的个数 【printf和scanf的非常正常用法】
    【题目描述】输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为N和m,表示整数序列的长度(N<=100)和指定的数字;第2行为N个整数,整数之间以一个空格分开。输出为N个数中与m相同的数的个数。【输入】第1行为N和m,表示整数序列的长度(N<=100)和指定的数字,中间用一个空......
  • iostat用法
    iostat是Linux系统中用于监控CPU使用情况和磁盘I/O活动的工具,它可以帮助你了解系统的I/O性能,尤其是在磁盘和存储设备上的读写情况。iostat是sysstat工具包的一部分,通常用于检测系统是否存在I/O性能瓶颈。1.安装iostat在一些Linux发行版中,iostat可能没有默认......