dokku – 哪里是我的应用程序的目录

我正在尝试访问我的Node.js应用程序的日志,这个应用程序是在应用程序目录下的文件mylogfile.log写入的。 使用find / -type f -name mylogfile.log我能够看到这个输出:

 /var/lib/docker/aufs/diff/0303e86afdc58e13b5afcc07ea3694e0e9e6d5e5cf8530a0854a76fbe2baf574/app/mylogfile.log /var/lib/docker/aufs/diff/a9a0dab44456acd8b43915ed686c282b778ab99df31f62076082e121274ef6e2/app/mylogfile.log /var/lib/docker/aufs/mnt/0303e86afdc58e13b5afcc07ea3694e0e9e6d5e5cf8530a0854a76fbe2baf574/app/mylogfile.log 

这些目录是什么(如果这是以前的应用程序推送,为什么我甚至需要它们,我真的不想洪泛硬盘的空间与他们),哪些是我目前正在运行的应用程序的目录?

另外在...mnt/...diff/还有更多的文件夹具有类似的神秘名字。

请注意,Docker容器的文件系统不打算由主机的用户访问 。 实际上,这是非常复杂的,因为Docker使用分层拷贝写文件系统(就像你的情况下的AUFS ,但是这是特定于发行版的;大多数Distros除了Ubuntu使用Devicemapper而不是AUFS,IIRC)。 你看到的是文件系统层 ,每个都包含一个父层的差异。

如果你想logging你的应用程序容器内的东西,你应该考虑下列其中一种可能性:

  1. 把你的日志文件放入一个卷中 。 您可以将主机目录挂载为卷,并在其中写入文件。 您需要使用-v标志( -v <host-directory>:<dir in container> )创build容器时指定装入。

     docker run -v /var/log/myapplication:/path/to/app/in/container myimage 
  2. 把你的日志写入标准输出 ,让Docker担心日志。 你可以访问日志(是的,它将只是一个大文件)使用

     docker logs <container-name> 

    您还可以在/var/lib/docker/containers/<container-id>/<container-id>-json.log中的Docker运行时目录(通常是/var/lib/docker )中find日志文件。 该日志文件不会自动旋转,因此可能会变大。

  3. 使用外部日志logging服务将日志数据写入networking中的其他位置。 典型的候选人将是系统日志 (老式)或设置像Logstash或Graylog 。

@helmberts答案是伟大的,给你所有你需要的东西,我尝试给食物一点点盐(和东西,而不是docker专用)。

关键是,你的应用程序生活在一个可恢复的开关环境。 随着你的部署( git push ),你需要设置一个门槛,每当你启动你的应用程序后,你创build一个克隆,一旦你停止了容器(类)。

你可以做dokku run myapp ls /看看它是怎么样的。 你可以修改( dokku run myapp touch /mytouched.file ),但是这些不会被dokku rundokku run会给你一个新的克隆!)并立即“丢失”。 如果您想永久保存文件,请使用并将其安装到您的应用程序容器中。 有一个很酷的插件(dokku卷) 。

我不能告诉你如何删除旧的差异。