docker 将数据从容器挂载到主机

docker mount data from container to host

我创建了自己的 Dockerfile,在构建过程中我插入到 /opt/wilfly/log 我的 log4j.xml。 现在我需要创建卷 /mnt/data/logs/application:/opt/wildfly/log

我运行命令 sudo docker 运行 --name=myapp -v /mnt/data/logs/application:/opt/wildfly/log -d -i -t application

但是当我查看 docker 容器时,文件夹 /opt/wilfly/log 是空的。在这个文件夹中应该是 log4j.xml.

谢谢。

挂载数据时,主机中的文件夹 "override" 容器内的挂载文件夹。

因此,您可以做一些选择:

  1. log4j.xml 复制到您的本地 /mnt/data/logs/application 文件夹中,然后像您一样 运行 容器。
  2. 删除 -v /mnt/data/logs/application:/opt/wildfly/log 并使用在映像构建期间添加的原始 log4j.xml

请注意,如果您愿意,您也可以只挂载文件(而不是整个 floder):-v /mnt/data/logs/application/log4j.xml:/opt/wildfly/log/log4j.xml 但这不会改变行为 - 来自您的主机的文件将被挂载到容器而不是相反的方向。

也许你应该把它移到另一个目录。

例如将 log4j.xml 移动到 /opt/wilfly/ 并将日志记录路径设置为 /opt/wilfly/log.

当你运行容器时,log4j.xml不会消失。