目前我有一个Dockerfile,它将使用ENTRYPOINT构建一个图像,允许我使用docker run
命令在基于CentOS的容器中运行命令。运行此命令后,停止并删除Docker容器。
但是,运行的命令将在Docker容器内生成一些日志文件,一旦容器退出,这些文件将立即丢失。保留这些文件的最佳做法是什么(最好能将它们存储在我的主机上)?
答案 0 :(得分:1)
这可能是一个解决方案: 创建一个命名的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