CMD运行后,将日志文件从Docker容器复制到主机

目前我有一个Dockerfile,它将使用ENTRYPOINT构建一个图像,该图像允许我使用docker run命令在基于CentOS的容器中docker run命令。 运行此命令后,Docker容器将停止并被移除。

但是,运行的命令将在Docker容器内生成一些日志文件,一旦容器退出,这些日志文件将立即丢失。 保存这些文件的最佳做法是什么(最好能够将它们存储在我的主机上)?


这可能是一个解决方案:创建一个命名的泊坞窗卷:

docker volume create --name centos-volume

所以你的主机上的卷的路径是/var/lib/docker/volumes/centos-volume/_data

比我创造的东西有希望与您的应用程序相媲美。 我的dockerfile(复制一个脚本,它将在我的容器中创建一个日志。当我使用docker run启动容器时(与您一样),我启动脚本:):

FROM centos:7
RUN mkdir /script
COPY create-log.sh /script/
RUN chmod +x /script/create-log.sh

脚本内容:(它在/var/log/anaconda创建一个日志文件)

#!/bin/bash
touch /var/log/anaconda/my-log.log
echo "hello world" >> /var/log/anaconda/my-log.log

我开始我的容器:

docker run --rm -ti -v centos-volume:/var/log/anaconda/ my-centos ./script/create-log.sh

因此,这个命令在我的容器中执行脚本,并将我的容器的/var/log/anaconda文件夹的内容挂载到我的主机上的卷上。

比我检查:

cat /var/lib/docker/volumes/centos-volume/_data/my-log.log
hello world

重新运行容器后,将出现第二个日志:

docker run --rm -ti -v centos-volume:/var/log/anaconda/ my-centos ./script/create-log.sh

$ sudo su
[root@localhost centos]# cat /var/lib/docker/volumes/centos-volume/_data/my-log.log
hello world
hello world
链接地址: http://www.djcxy.com/p/18269.html

上一篇: Copy log files from Docker container to host after CMD is run

下一篇: Docker how to change repository name or rename image?