运行CMD后,将日志文件从Docker容器复制到主机
目前,我有一个docker文件,它将构建一个带有入口点的映像,该入口点允许我使用运行CMD后,将日志文件从Docker容器复制到主机,docker,dockerfile,Docker,Dockerfile,目前,我有一个docker文件,它将构建一个带有入口点的映像,该入口点允许我使用docker run命令在基于CentOS的容器中运行命令。运行此命令后,Docker容器将停止并移除 但是,运行的命令将在Docker容器内生成一些日志文件,一旦容器退出,这些文件将立即丢失。保存这些文件的最佳做法是什么(最好是将它们存储在我的主机上) 这可能是一种解决方案: 创建命名的docker卷: docker volume create --name centos-volume 因此,主机上他的卷的路径是
docker run
命令在基于CentOS的容器中运行命令。运行此命令后,Docker容器将停止并移除
但是,运行的命令将在Docker容器内生成一些日志文件,一旦容器退出,这些文件将立即丢失。保存这些文件的最佳做法是什么(最好是将它们存储在我的主机上) 这可能是一种解决方案:
创建命名的docker卷:
docker volume create --name centos-volume
因此,主机上他的卷的路径是/var/lib/docker/volumes/centos volume/\u data
比我创造的东西,希望能与你的应用程序相媲美。
我的dockerfile(复制一个脚本,该脚本将在我的容器中创建日志。我在使用docker run启动容器时启动该脚本(就像您所做的那样)):
脚本内容:(它在/var/log/anaconda
中创建一个日志文件)
我以以下内容开始我的容器:
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
你应该阅读,你可以挂载你的日志文件存储到你的主机的地方。我已经读了一些关于loggly,我正在考虑使用它。如果我可以@lorenzvth7这样做,那将非常简单,但是日志文件直到docker容器启动后才生成(如果我在启动容器时将目录装载到主机,我相信我的日志目录将是空的)@kshah我真的不知道。它很容易安装,所以我建议尝试一下。例如,当您启动空装载的容器时,执行docker exec进入容器内部并在正确的文件夹中创建test.txt,然后退出并删除容器。我想test.txt会出现在您主机上的文件夹中。@lorenzvth7我已经尝试过了,但它似乎不起作用——我用ENTRYPOINT命令填充的logs目录是空的。不过,我会继续研究这个问题
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