从 Dockerfile 写入 docker 卷不起作用

2024-05-05

请考虑以下 Dockerfile:

FROM phusion/baseimage
VOLUME ["/data"]
RUN touch /data/HELLO
RUN ls -ls /data

问题:“/data”目录不包含“HELLO”文件。此外,任何其他写入卷目录的尝试(通过 echo、mv、cp...)都不会成功 - 该目录始终为空。没有显示错误消息。

我在文档或 stackoverflow 上找不到有关此问题的任何内容。

这是众所周知的还是新的事情?

docker version返回:

Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.3.1
Git commit (client): fa7b24f
OS/Arch (client): linux/amd64
Server version: 1.2.0
Server API version: 1.14
Go version (server): go1.3.1
Git commit (server): fa7b24f

Dockerfile 的每个步骤都在其自己的容器中运行,该步骤完成后该容器将被丢弃,并且当命令完成后删除最后一个(仅在本例中)使用卷的容器时,卷将被丢弃。这使得卷不太适合在 Dockerfile 中使用因为他们中途丢失了内容。 Docker 文件旨在能够在任何地方运行,如果它们使用持续存在的卷,则会变得更加困难。另一方面,如果您确实想要这样做,只需在主机上使用目录备份卷即可。

PS:初始化主机的数据目录最好在 Docker 文件之外完成。

上次我需要这个时,我在 docker 文件中省略了这一步,因为这一步的想法是准备host运行此 Dockerfile 生成的镜像。然后我使用 docker run 创建了一个容器,并在该容器中运行了通常的数据库设置内容。

docker run -v /var/lib/mysql:/raid/.../mysql ...
/usr/bin/mysql_install_db 
mysql_secure_installation

现在,当此容器移动到新主机时,可以随身携带该数据目录,也可以使用该主机上的相同进程创建该数据目录。或者,如我的示例所示,如果您想要另一个 mysql 数据库用于其他应用程序,则无需重复创建容器。

重要的想法是将容器创建和主机设置分开。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Dockerfile 写入 docker 卷不起作用 的相关文章

随机推荐

  • 在隐藏字段中创建 has_many 关联

    说用户 has many Things 在用户表单中 我想要一个隐藏字段 它可以让我在这个新用户和预先存在的事物 例如 id 8 之间创建关系 以下代码片段有什么问题 我想我只是忘记了一些语法 对于后代 如果您有多个 事物 值需要以数组形式
  • 选择特定值之后的项目

    说这是我的sql SELECT title author ISBN FROM bs books ORDER BY ISBN LIMIT 3 它只是从某个表中选择所有内容 标题 作者等 假设我想选择某个标题后面的所有项目 而不是按字母顺序或其
  • Servlet 包含 Tomcat 中的 HTTP 标头

    我有一个 servlet 它的请求调度程序包含另一个 servlet 包含的 servlet 设置了我想在包括小服务程序 因此 我在 include 方法中传入一个自定义 HTTPResponse 对象 该对象捕获来自 servlet 的所
  • 在 Xcode 中添加较大的 Power 值

    我是 Objective C 和 iPhone 开发的新手 我正在使用基本计算器 我想在文本字段中添加一个大值 如何在 Xcode 中显示像这样的大值 6 67543 x 10 34 谢谢 您可以使用 NSNumberFormatterSc
  • C 中的数组初始化

    我对以下代码有疑问 int main int array1 1 2 3 4 5 error in c warning in c int array2 1 2 3 4 5 int array3 5 1 2 3 4 5 这段代码在第 3 行给出
  • 在 Python 3.5 64 位上通过 pip 安装 OpenCV

    我尝试安装 OpenCV 但找不到任何合适的 pip 软件包 我决定上网查找有关如何安装它的官方文档 并发现this https opencv python tutroals readthedocs io en latest py tuto
  • DbContext 因 PrimitiveType != null 错误而崩溃

    使用 Entity Framework Code First Web 应用程序在调用 DbContext 时崩溃 并出现以下错误 断言失败 表达式 primitiveType null 描述 断言失败 primitiveType null
  • 如何正确定向从 AVCaptureVideoDataOutputSampleBufferDelegate 生成的图像

    我在用着AVCaptureVideoDataOutputSampleBufferDelegate我收到一个CMSampleBufferRef我将其转换为UIImage 但生成的图像方向不正确 Get a CMSampleBuffer s C
  • bitblt 在 Windows 10 版本 1703 上失败 (15063.138)

    使用 Visual Studio 2017 vc141 以下代码应该从前游戏窗口获取屏幕截图 但现在它返回黑色和空白图像 唯一的游戏问题 尝试过 OpenGL 和 Vulkan ogl 返回黑色 vulkan 返回白色 在升级到 Windo
  • 是否可以在 Flutter 中创建自定义快速设置图块?

    我搜索了 Flutter 文档并用谷歌搜索了这个 但结果为零 我正在开发我的第一个 Android Flutter 应用程序 我想为其创建一个自定义的快速设置图块 我的目标是牛轧糖及以上 我知道这在 Java 和 Kotlin 中是可能的
  • ios safari - getUserMedia 无法正常工作

    我真的有this https stackoverflow com q 45692526 6048715问题 但 OP 的解决方案对我不起作用 重申一下 我正在使用navigator mediaDevices getUserMedia 在浏览
  • 生成非连续组合

    我正在尝试创建一个生成器 支持执行 next 的迭代器 可能在 python 中使用yield 它给出来自 1 2 n n 和 r 是参数 的 r 元素的所有组合 这样在选出的r个元素 没有两个是连续的 例如 对于 r 2 且 n 4 生成
  • 如何在 Linux 上调用 Python 中的内联机器代码?

    我正在尝试从 Linux 上的纯 Python 代码调用内联机器代码 为此 我将代码嵌入到字节文字中 code b x55 x89 xe5 x5d xc3 然后打电话mprotect http www kernel org doc man
  • Google Analytics 是否具有针对长时间运行的网络应用程序的“心跳”功能?

    我正在制作一个专注于观看嵌入内容的网络应用程序 我希望应用程序客户端向 GA Google Analytics 发送 心跳 类型的信号以保持会话继续进行 现在看来 如果访问者观看视频 5 10 分钟 GA 就会假设他已经离开页面 并将用户的
  • 使用未解析的运算符 <=

    我正在尝试使用 Swift 3 for 循环 但没有成功 这是我所拥有的 for assumedPayRate Double in 0 25 lt billRate where assumedPayRate 0 25 On the lt 它
  • Google PubSub 在阻止和等待消息时没有标准输出

    我正在使用这个问题底部的 Python 代码监听 Google PubSub 消息 它实际上是来自 Google 的异步拉取示例 我运行我的程序并输出到文件 python my script py tee log txt 如果我在接收消息时
  • C# 隐式更新传递给没有返回类型且没有 out 或 ref 使用的方法的参数

    这对我来说太时髦了 显然开发人员应该使用关键字 out 但我不敢相信这竟然有效 public BusinessResponse
  • 将引导加载程序存储在软盘映像上的哪里?

    我将编写并测试引导加载程序 为了做到这一点 我计划将引导加载程序复制到软盘映像文件上并将其安装在虚拟机中 但是 我不确定将引导加载程序的机器代码放在哪里 它是否只是转储到文件的前几个字节中 软盘的引导扇区是第一个扇区 如果您谈论的是原始软盘
  • 如何在 Rails 中每天缓存一个值?

    在 Rails 中每天缓存一个值的最佳方法是什么 我有一个可通过 API 访问的数据库调用 我想每天制作并存储它 做到这一点的最佳方法 做法是什么 假设你有一个widget price您只想每 24 小时更新一次 通常你使用Widget c
  • 从 Dockerfile 写入 docker 卷不起作用

    请考虑以下 Dockerfile FROM phusion baseimage VOLUME data RUN touch data HELLO RUN ls ls data 问题 data 目录不包含 HELLO 文件 此外 任何其他写入