热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Dockerfile:了解VOLUME指令

如何解决《Dockerfile:了解VOLUME指令》经验,为你挑选了1个好方法。

我们来举个例子吧.

以下是VOLUME该指令nginx的图像:

VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]

这是我的问题:

    当您启动容器时,这些目录是否会显示在我的主机上?当我停止我的容器时,目录将保留?

    如果我的主机中已存在某些(或所有)这些目录,会发生什么?例如,假设图像/etc/nginx在容器目录中附带了一个默认配置文件/etc/nginx,我的主机上也有一个配置文件.当容器启动时,哪些文件将获得优先权?

    -v /host/dir:container/dir和之间的关键区别是VOLUME什么?

参考文献:

https://github.com/dockerfile/nginx/blob/master/Dockerfile

http://www.tech-d.net/2014/11/03/docker-indepth-volumes/

如何在构建期间将主机卷装入Dockerfile中的docker容器中

http://jpetazzo.github.io/2015/01/19/dockerfile-and-data-in-volumes/

Adrian Mouat.. 22

容器的卷只是主机上的目录,无论它们是由哪种方法创建的.如果您未在主机上指定目录,Docker将为该卷创建一个新目录,通常位于该目录下/var/lib/docker/vfs.

但是创建了卷,通过使用docker inspect命令可以很容易地找到它在主机上的位置,例如:

$ ID=$(docker run -d -v /data debian echo "Data container")
$ docker inspect -f {{.Mounts}} $ID
[{0d7adb21591798357ac1e140735150192903daf3de775105c18149552a26f951 /var/lib/docker/volumes/0d7adb21591798357ac1e140735150192903daf3de775105c18149552a26f951/_data /data local  true }]

我们可以看到Docker已经为该卷创建了一个目录/var/lib/docker/volumes/0d7adb21591798357ac1e140735150192903daf3de775105c18149552a26f951/_data.

您可以从主机中自由修改/添加/删除此目录中的文件,但请注意,您可能需要使用sudo权限.

Docker只会在两种情况下删除卷目录:

如果--rm给出该选项,则docker run在容器退出时将删除任何卷

如果删除了容器docker rm -v CONTAINER,则将删除任何卷.

在这两种情况下,只有在没有其他容器引用它们时才会删除卷.-v HOST_DIR:CON_DIRDocker永远不会删除映射到特定主机目录的卷(语法).但是,如果删除卷的容器,则命名方案意味着您将很难确定哪个目录包含该卷.

那么,具体问题:

    是的,是的,有上述警告.

    每个Docker托管卷都在主机上获取一个新目录

    VOLUME指令与-v未指定主机目录相同.指定主机目录时,Docker不会为卷创建任何目录,也不会从映像复制文件,也不会删除卷(docker rm -v CONTAINER不会删除映射到用户指定主机目录的卷).

更多信息:

http://container-solutions.com/2014/12/understanding-volumes-docker/



1> Adrian Mouat..:

容器的卷只是主机上的目录,无论它们是由哪种方法创建的.如果您未在主机上指定目录,Docker将为该卷创建一个新目录,通常位于该目录下/var/lib/docker/vfs.

但是创建了卷,通过使用docker inspect命令可以很容易地找到它在主机上的位置,例如:

$ ID=$(docker run -d -v /data debian echo "Data container")
$ docker inspect -f {{.Mounts}} $ID
[{0d7adb21591798357ac1e140735150192903daf3de775105c18149552a26f951 /var/lib/docker/volumes/0d7adb21591798357ac1e140735150192903daf3de775105c18149552a26f951/_data /data local  true }]

我们可以看到Docker已经为该卷创建了一个目录/var/lib/docker/volumes/0d7adb21591798357ac1e140735150192903daf3de775105c18149552a26f951/_data.

您可以从主机中自由修改/添加/删除此目录中的文件,但请注意,您可能需要使用sudo权限.

Docker只会在两种情况下删除卷目录:

如果--rm给出该选项,则docker run在容器退出时将删除任何卷

如果删除了容器docker rm -v CONTAINER,则将删除任何卷.

在这两种情况下,只有在没有其他容器引用它们时才会删除卷.-v HOST_DIR:CON_DIRDocker永远不会删除映射到特定主机目录的卷(语法).但是,如果删除卷的容器,则命名方案意味着您将很难确定哪个目录包含该卷.

那么,具体问题:

    是的,是的,有上述警告.

    每个Docker托管卷都在主机上获取一个新目录

    VOLUME指令与-v未指定主机目录相同.指定主机目录时,Docker不会为卷创建任何目录,也不会从映像复制文件,也不会删除卷(docker rm -v CONTAINER不会删除映射到用户指定主机目录的卷).

更多信息:

http://container-solutions.com/2014/12/understanding-volumes-docker/


推荐阅读
  • PyTorch框架中有一个非常重要且好用的包:torchvision,该包主要由3个子包组成,分别是:torchvision.datasets、torchvision.models、torchv ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
  • Ubuntu18.04 安装ROS Melodic && Ros2 Dashing
    https:blog.csdn.netqq_44717317articledetails104547474一、Ubuntu18.04的安装ubuntu2go的制作关于Ubuntu2 ... [详细]
  • buildah是用来修改和改造镜像的工具,和podman同源,很多参数相似!只是podman用来纯粹运行容器,一个纯粹建造容器!1.获取容器并赋名buildah--nametest ... [详细]
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
爱的甜蜜日记2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有