广告
返回顶部
首页 > 资讯 > 精选 >Dockerfile中VOLUME与docker -v的区别是什么
  • 386
分享到

Dockerfile中VOLUME与docker -v的区别是什么

2023-06-14 07:06:25 386人浏览 泡泡鱼
摘要

这篇文章主要介绍Dockerfile中VOLUME与docker -v的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Dockerfile 中的 VOLUME 挂载与 docker -v 命令挂载,两者有明

这篇文章主要介绍Dockerfile中VOLUME与docker -v的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Dockerfile 中的 VOLUME 挂载与 docker -v 命令挂载,两者有明显区别:

1、VOLUME

Dockerfile中 VOLUME 方式挂载到宿主机上的是匿名卷,在宿主机上是自动匿名挂载到 /var/lib/docker/volumes/ 目录下的,代码如下:

FROM frolvlad/alpine-java:jre8-slimMaiNTAINER oas.cloudCOPY nickdir .VOLUME /usr/local/oas/file/WORKDIR /usr/local/oas/

上述 VOLUME /usr/local/oas/file/ 定义的是容器内目录所在路径,在容器创建过程中会在容器中创建该目录,而宿主机上的挂载目录名是随机生成的,

例如:

/var/lib/docker/volumes/593fda6d7b8296bfca22894b326727c734133eebb11c9bc2c25a73b892157a37

这里宿主机上的

/var/lib/docker/volumes/593fda6d7b8296bfca22894b326727c734133eebb11c9bc2c25a73b892157a37

目录对应的就是容器中的 /usr/local/oas/file/ 目录

2、docker -v

docker -v 可以指定挂载到宿主机的具体目录,相对于Dockerfile的 VOLUME 挂载方式更具有可控性,代码如下:

$ docker run —name tengine-WEB -d -p 9527:80 -p 9000:9000 \-v /usr/local/tengine/logs:/var/log/Nginx \-v /usr/local/tengine/conf.d:/etc/nginx/conf.d \-v /usr/local/tengine/conf/nginx.conf:/etc/nginx/nginx.conf \-v /usr/local/tengine/html:/usr/share/nginx/html \-v /usr/local/oas/file:/usr/local/oas/file nginx

上述命令就可以将宿主机的 /usr/local/tengine/logs 等目录挂载到容器的 /var/log/nginx 等对应目录,冒号前为宿主机目录(绝对路径),冒号后为镜像内挂载的路径(绝对路径)。

补充:Docker数据卷挂载命令volume(-v)与mount的区别

一、前言

用户可以通过docker run的--volume/-v或--mount选项来创建带有数据卷的容器,但这两个选项有些微妙的差异,在这里总结梳理一下。

二、命令用法

--volume(-v)

参数--volume(或简写为-v)只能创建bind mount。示例:

docker run --name $CONTAINER_NAME -it \-v $PWD/$CONTAINER_NAME/app:/app:rw \-v $PWD/$CONTAINER_NAME/data:/data:ro \avocado-cloud:latest /bin/bash

注释:

命令格式:

[[HOST-DIR:]CONTAINER-DIR[:OPTioNS]]]

如果指定HOST-DIR则必须是绝对路径,如果路径不存在则会自动创建

实例中的rw为读写,ro为只读

--mount

参数--mount默认情况下用来挂载volume,但也可以用来创建bind mount和tmpfs。如果不指定type选项,则默认为挂载volume,volume是一种更为灵活的数据管理方式,volume可以通过docker volume命令集被管理。示例:

docker run --name $CONTAINER_NAME -it \--mount type=bind,source=$PWD/$CONTAINER_NAME/app,destination=/app \--mount source=${CONTAINER_NAME}-data,destination=/data,readonly \avocado-cloud:latest /bin/bash

注释:

挂载volume命令格式:

[type=volume,]source=my-volume,destination=/path/in/container[,...]

创建bind mount命令格式:

type=bind,source=/path/on/host,destination=/path/in/container[,...]

如果创建bind mount并指定source则必须是绝对路径,且路径必须已经存在

示例中readonly表示只读

三、差异总结

1、创建bind mount和挂载volume的比较

对比项bind mountvolume
Source位置用户指定/var/lib/docker/volumes/
Source为空覆盖dest为空保留dest内容
Source非空覆盖dest内容覆盖dest内容
Source种类文件或目录只能是目录
可移植性一般(自行维护)强(docker托管)
宿主直接访问容易(仅需chown)受限(需登陆root用户)*

*注释:

Docker无法简单地通过sudo chown someuser: -R /var/lib/docker/volumes/somevolume来将volume的内容开放给主机上的普通用户访问,如果开放更多权限则有安全风险。而这点上Podman的设计就要理想得多,volume存放在$HOME/.local/share/containers/storage/volumes/路径下,即提供了便捷性,又保障了安全性。

无需root权限即可运行容器,这正是Podman的优势之一,实际使用过程中的确受益良多。

2、创建bind mount时使用--volume和--mount的比较

对比项--volume 或 -v--mount type=bind
如果主机路径不存在自动创建命令报错

以上是“Dockerfile中VOLUME与docker -v的区别是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Dockerfile中VOLUME与docker -v的区别是什么

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Dockerfile中VOLUME与docker -v的区别是什么
    这篇文章主要介绍Dockerfile中VOLUME与docker -v的区别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Dockerfile 中的 VOLUME 挂载与 docker -v 命令挂载,两者有明...
    99+
    2023-06-14
  • Dockerfile 中 VOLUME 与 docker -v 的区别说明
    Dockerfile 中的 VOLUME 挂载与 docker -v 命令挂载,两者有明显区别: 1、VOLUME Dockerfile中 VOLUME 方式挂载到宿主机上的是匿名卷...
    99+
    2022-11-11
  • VUE中的v-if与v-show有什么区别
    这篇文章将为大家详细讲解有关VUE中的v-if与v-show有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.共同点都是动态显示DOM元素2.区别(1)手段:v-if是动态的向DOM树内添加或者...
    99+
    2023-06-29
  • Vue中v-model,v-bind,v-on的区别是什么
    本篇内容介绍了“Vue中v-model,v-bind,v-on的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!v-modelv-m...
    99+
    2023-07-04
  • v$sql,v$sqlarea,v$sqltext的区别是什么
    v$sql,v$sqlarea,v$sqltext的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。v$sqltext中有内存中完整的sql语句(SQL被分割为多行存储...
    99+
    2023-06-06
  • vue中v-if和v-for的区别是什么
    本教程操作环境:windows7系统、vue3版,DELL G3电脑。首先在官方文档中明确指出v-for和v-if不建议一起使用。一、v-if和v-for的作用v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true...
    99+
    2023-05-14
    vue3 v-if v-for
  • v$mystat、v$sesstat和v$sysstat的区别是什么
    v$mystat、v$sesstat和v$sysstat的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 ...
    99+
    2022-10-19
  • VUEsync修饰符与v-model的区别是什么
    VUEsync修饰符与v-model的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。.sync修饰组件<!DOCTYPE&nb...
    99+
    2022-10-19
  • docker中容器与镜像的区别是什么
    本篇文章为大家展示了docker中容器与镜像的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是镜像?镜像可以看成是由多个镜像层叠加起来的一个文件系统(通过UnionFS与AU...
    99+
    2023-06-15
  • v$asm_diskgroup状态下connected与mounted的区别是什么
    本篇文章为大家展示了v$asm_diskgroup状态下connected与mounted的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。遇到客户问asm...
    99+
    2022-10-19
  • vue中的v-if和v-show有什么区别
    小编给大家分享一下vue中的v-if和v-show有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-19
  • php中==与===的区别是什么
    这篇文章主要讲解了“php中==与===的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中==与===的区别是什么”吧!一、“==”操作符“==”操作符是PHP中的等于操作符...
    99+
    2023-07-05
  • Python中==与is的区别是什么
    这篇文章主要介绍“Python中==与is的区别是什么”,在日常操作中,相信很多人在Python中==与is的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中==与is的区别是什么”的疑...
    99+
    2023-06-16
  • Java语言中&&与& ||与|的区别是什么
    1、运算符两边的变量为boolean变量时       先列出代码:public class Test { public static void main(String[] args) {...
    99+
    2023-05-31
    java
  • mysql中分表与分区的区别是什么
    这篇文章将为大家详细讲解有关mysql中分表与分区的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一,什么是mysql分表,分区什么是分表,从表面...
    99+
    2022-10-18
  • CSS与HTML中link与@import的区别是什么
    本篇内容介绍了“CSS与HTML中link与@import的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2022-10-19
  • Docker和容器镜像的区别是什么
    本篇文章为大家展示了Docker和容器镜像的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。很多刚刚接触容器技术的朋友,不容易弄清楚容器,容器镜像和Docker这几个词的区别和联系。我们首先...
    99+
    2023-06-04
  • Linux中wget与yum的区别是什么
    Linux中wget与yum的区别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一般来说著名的linux系统基本上分两大类:RedHat系列:Redhat、Cento...
    99+
    2023-06-05
  • Python3中re.match与re.search的区别是什么
    本文小编为大家详细介绍“Python3中re.match与re.search的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python3中re.match与re.search的区别是什么”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-06-08
  • Vue3.0中Ref与Reactive的区别是什么
    这篇文章主要介绍“Vue3.0中Ref与Reactive的区别是什么”,在日常操作中,相信很多人在Vue3.0中Ref与Reactive的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3.0中...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作