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" 容器内的挂载文件夹。
因此,您可以做一些选择:
- 将
log4j.xml
复制到您的本地 /mnt/data/logs/application
文件夹中,然后像您一样 运行 容器。
- 删除
-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不会消失。
我创建了自己的 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" 容器内的挂载文件夹。
因此,您可以做一些选择:
- 将
log4j.xml
复制到您的本地/mnt/data/logs/application
文件夹中,然后像您一样 运行 容器。 - 删除
-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不会消失。