当前位置: 首页 > 知识库问答 >
问题:

使用Docker,我如何绑定挂载,同时保存容器文件?

艾谦
2023-03-14
  1. .Terraform/是稳定的东西,应该存在于容器中,而不是我的主机目录中,但即使在装入后也需要保留。
  2. my_stuff.tf既存在于容器中(因为init需要它),也存在于主机目录中(因为我要编辑它)。我希望我的主机目录版本覆盖容器版本。
  3. Terraform.tfstate可能不存在于任何一个起始位置,而是在运行过程中生成的。我希望它一存在就保留在我的主机目录中。

(我猜是第4类,比如readme.md,我不在乎它是否存在)

在我的例子中,TF希望配置插件的.terraform/terraform.tfstate(我想用绑定挂载捕获的输出之一)都在同一个目录中,所以我不能只为容器内部的东西和绑定挂载的东西使用不同的目录。

# Dockerfile
FROM plugin_source AS plugins
FROM terraform_base
COPY --from=plugins terraform-provider-X /bin/
COPY my_stuff.tf /app/
WORKDIR /app
RUN /bin/terraform init

和运行命令:

docker run --rm -i -t --mount source=$PWD,target=/app,type=bind my_terraform <some-tf-command>

有没有一种灵巧的方法可以使绑定挂载像https://docs.docker.com/storage/bind-mounts/#mount-into-a-non-empty-directory-on-the-container中所描述的那样,在第一次初始化时像命名卷那样运行?目前看来,我可能需要编写一个小小的入口点脚本,将稳定的东西符号链接到我的工作目录中。

共有1个答案

萧麒
2023-03-14

我曾使用计算机上运行的旧开发Weblogic容器执行此操作:

  1. 运行映像
  2. Docker CP本地磁盘感兴趣的目录
  3. 停止终止容器
  4. 使用卷映射再次运行图像。

这使我可以从virgin容器中重新开始处理文件,并保留服务器中的所有更改。

 类似资料:
  • 问题内容: 我有这个容器基于(但是与我有相同的问题,这并不是很相关)。我到达需要的地方 我得到 我在任何内核日志中都找不到任何东西,而且没有任何有趣的结果。我显然可以在主机上执行此操作(使用任何其他对子树/节点)。在我上面的示例中,/ htdocs / www是Docker卷的安装点,但它似乎没有任何意义,因为容器内没有任何一对子树/节点。 问题答案: 要使用系统调用,您需要具备此功能。默认情况下

  • 我无法用redis数据库中的数据创建docker redis容器的图像。目前,我正在这样做: 很明显,我对一些基本的东西不太了解。docker commit不是从现有容器创建新映像吗? 好吧,我一直在挖掘。hub上的默认redis图像。docker使用一个数据卷,然后将其装入容器中的/data。为了在容器之间共享此卷,必须使用以下参数启动一个新容器: 请注意,参数的顺序很重要,否则docker r

  • 我发现了这个相关的问题:如何在卷中装入单个文件,但使用PWD运行的概念在Windows上对我不起作用,因为我得到了以下错误: 我正在Windows 10(构建16299.192)上运行Docker 我的Docker运行命令是:

  • 问题内容: 我有一个在docker-machine上运行的weblogic容器(正在使用docker toolbox在Windows 7上运行),并希望将日志从容器自动保存到Windows机器。 我知道我可以使用命令,但是,不是每次都将日志记录到Windows计算机上,而是有更好的方法将日志从容器保存到Windows计算机上的文件夹中吗? 问题答案: 请参阅“ Docker日志记录策略 ”,其中介

  • 问题内容: 我试图了解Docker的来龙去脉,但我对保存映像的前景感到困惑。 我运行了基本的Ubuntu映像,安装了Anaconda Python和其他一些东西…那么,保存进度的最佳方法是什么?保存,提交,导出? 这些似乎都无法与VirtualBox一样工作,后者为您的虚拟机提供了一个明显的保存状态文件。 问题答案: 通常的方法至少是通过:将容器的状态冻结为新映像。 注:由于评论由anchovyl

  • 问题内容: 在Windows主机下安装Docker卷对我来说是一个巨大的痛苦,而且我无法使其正常工作。 目前,我得到了以下简单的Dockerfile: 当我从中构建图像并启动容器时 容器正常启动。 但是当我尝试装载一个卷时, 将显示以下消息: 该目录肯定存在于容器中,尝试其他目录不会更改结果。在主机端目录前添加斜杠也无济于事。() 例如,如何安装到? 事实证明,容器端目录必须为空,因为它有一个子目