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
- docker安装卷GID不匹配导致错误:拨号unix /var/run/docker.sock:连接:权限被拒绝
- 当从Dockerfile调用脚本时,如何防止出现`#!/ bin / bash:not found`错误
- Dockerfile WORKDIR,ENTRYPOINT,VOLUME …适用于儿童图像吗?
- 获取Vmware之旅并转到Docker,如何正确设置Dockerfile或cointainer?
- 如何在Dockerfile中引用当前的构build上下文目录?
- 为什么Docker官方图片不能按照“最佳实践”的要求使用USER
- 为什么setfacl不能在docker容器中工作?
- libgd未安装在php:5.6-cli docker中
- 在Docker中传递来自CMD的参数