当前位置: 首页 > 面试题库 >

如何在Docker镜像中“取消声明”卷?

璩慎之
2023-03-14
问题内容

我正在编写一个Dockerfile来设置用于测试Web应用程序的映像。我将其基于tutum /
lamp图像(https://github.com/tutumcloud/tutum-docker-
lamp/blob/master/Dockerfile
),因为这似乎是一个很好的起点。

作为我的dockerfile的一部分,我想创建一个mysql数据库并在其中建立一些东西。但是,tutum / lamp图像声明为VOLUME ["/etc/mysql", "/var/lib/mysql" ],因此,如果我正确理解,则不会持久化对Dockerfile中的MySQL数据库所做的任何更改。

  • 我理解正确吗?

如是,

  • 有没有一种方法可以“取消声明”这些卷,以便这些目录像其他所有目录一样成为联合文件系统的一部分?

谢谢!


问题答案:

您无法真正取消声明卷,但是可以通过修改其dockerfile来构建自己的原始映像版本。



 类似资料:
  • 拉取官方 Docker 镜像 docker pull apache/shardingsphere-proxy 手动构建 Docker 镜像(可选) git clone https://github.com/apache/shardingsphere mvn clean install cd shardingsphere-distribution/shardingsphere-proxy-dist

  • 问题内容: 我有几个要使用的docker镜像。我不想先上传然后下载相同的图像,而不仅仅是直接使用本地图像。我该怎么做呢? 我尝试过的东西: 1.我尝试运行这些命令(分别两次删除minikube实例并重新开始) 输出: 它只是停留在某些状态,但从未达到就绪状态。 2.我尝试创建一个注册表,然后将图像放入其中,但这也不起作用。我可能做错了,但是找不到正确的说明来完成此任务。 请提供说明以在本地kube

  • 以下步骤指导您构建自己的Envoy二进制文件,并将其放入干净的Ubuntu容器中。 第1步:构建Envoy 使用envoyproxy/envoy-build编译Envoy。该镜像具有构建Envoy所需的全部软件。在您的Envoy目录中执行如下命令: $ pwd src/envoy $ ./ci/run_envoy_docker.sh './ci/do_ci.sh bazel.release' 执

  • 官方最佳实践文档 Best practices for writing Dockerfiles 明确指定镜像版本 构建镜像时,建议明确指定包含版本或者其他辅助信息的tag。 如果不指定镜像tag,默认会使用latest。这种方式不利于版本管理,对应用启动速度也有一定影响(每次启动应用实例时,都需要去镜像仓库检查镜像是否更新) 减小镜像大小 使用alpine版本的基础镜像 alpine是一个高度精简

  • 我阅读了Docker映像规范v1.2.0。上面说: 层由其序列化表示的加密哈希引用。这是用于传输层的tar存档上的SHA256摘要,表示为256位的十六进制编码,例如,SHA256:A9561EB1B190625C9ADB5A9513E72C4DEDAFC1CB2D5236C9A6957DFD5A9。层必须重复打包和解包,以避免更改层ID,例如使用tar split保存tar标头。请注意,用作层I

  • 问题内容: 在做镜像或拉镜像时,Docker如何确定镜像名称中是否存在注册表服务器,或者默认注册表中它是否为路径/用户名(例如Docker Hub)? 我从1.1图像规范中看到以下内容: 标签 标签用于将用户提供的描述性名称映射到任何单个图像ID。标记值限于字符集[a-zA-Z_0-9]。 资料库 标签的集合,这些标签被分组在一个共同的前缀下:(:之前的名称部分)。例如,在标记有名称my-app: