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

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

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

这可能是一个解决scheme:创build一个命名的泊坞窗卷:

 docker volume create --name centos-volume 

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

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

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

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

 #!/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