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

如何将Docker容器中的目录挂载到主机?

邹英发
2023-03-14

假设我有一个应用程序具有这个简单的DockerFile:

//...
RUN configure.sh --logmyfiles /var/lib/myapp
ENTRYPOINT ["starter.sh"]
CMD ["run"]
EXPOSE 8080
VOLUME ["/var/lib/myapp"]

然后我运行了一个容器:

sudo docker run -d --name myapp -p 8080:8080 myapp:latest

所以它工作正常,并将一些日志存储在docker容器的/var/lib/myapp中。

我也看到docker-mount目录从容器到主机,但它并没有解决我的问题我需要一种方法备份我的文件从Docker到主机。

共有1个答案

易成天
2023-03-14

首先,关于Docker卷的一点信息。卷挂载仅在容器创建时发生。这意味着在启动容器后不能更改卷挂载。而且,卷挂载是单向的:从主机到容器,而不是从主机到容器。当您指定一个作为卷挂载在容器中的主机目录(例如,类似于:Docker run-d--name=“foo”-v“/path/on/host:/path/on/container”ubuntu)时,它是一个“常规OLE”linuxmount--bind,这意味着主机目录将临时“覆盖”容器目录。目标目录上实际上没有删除或覆盖任何内容,但由于容器的性质,这实际上意味着它将在容器的生存期内被覆盖。

所以,你只有两个选择(也许是三个)。您可以将主机目录挂载到容器中,然后在启动脚本中复制这些文件(或者,如果您将cron挂载到容器中,您可以使用cron定期将这些文件复制到主机目录卷挂载)。

您还可以使用Docker CP将文件从容器移动到主机。现在,这有点离谱,绝对不是您应该在基础设施自动化中使用的东西。但它确实很好地实现了这一目的。一次性或调试是一个很好的情况。

 类似资料:
  • 假设我有一个应用程序具有这个简单的DockerFile: 然后我运行了一个容器: 所以它工作正常,并将一些日志存储在docker容器的中。 我也看到docker-mount目录从容器到主机,但它并没有解决我的问题我需要一种方法备份我的文件从Docker到主机。

  • 我想挂载我的usb驱动器到一个正在运行的docker实例,手动备份一些文件。 我知道的特性,但这会创建一个新的容器。注意:它是一个nextcloudpi容器。

  • 问题内容: 我想将目录从docker容器挂载到本地文件系统。该目录是网站根目录,我需要能够使用任何编辑器在本地计算机上对其进行编辑。 我知道我可以运行,但是这样做只能在容器内创建一个空目录。 如何在Linux主机上的Docker容器内挂载目录? 问题答案: 如果您的目标是提供现成的LAMP,则应在Dockerfile中使用VOLUMES声明。 问题是docker不会挂载文件,因为它们已经在创建卷的

  • 问题内容: 我对Docker中的整个数据量过程有疑问。基本上,这里有两个Dockerfile及其各自的运行命令: Dockerfile 1- 命令1- Dockerfile 2- 命令2- 因此,奇怪的是第一个dockerfile和命令按预期工作。docker守护程序将目录从容器装载到主机的位置。因此,我可以根据需要编辑配置文件,它们将在重新启动后保留在容器中。 但是,对于第二个dockerfil

  • 我正在尝试将当前的工作目录挂载到Docker容器上,但没有工作。这是我的Dockerfile 我想,它们应该只安装在容器上,并且只有输出将在当前工作目录中生成。抱歉,我对Docker很陌生,我需要一些帮助....

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