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