docker和“易失性卷”ala / tmp

我使用2个Docker镜像运行一个服务器,其中一个是构build和打包,因此在/ tmp上创build了很多短暂的东西。

我希望这个容器/ tmp不被永久卷(union fs或volume)支持,而是使用主机的/ tmp,而tmpfs又是一个tmpfs卷,是此类操作的理想select。 保存对正常驱动器的访问将会产生开销,并导致对硬盘的访问(磨损),我宁愿尽量保留在RAM中。

一些选项是:

  • 绑定/ tmp /:/ tmp到docker进程。 看起来不太安全,如果另一个进程访问这个目录是有问题的
  • 将卷绑定到/ tmp。 这意味着它在硬盘上,除非我设法将其移动到/ tmp。 每当容器停止时,仍然存在删除这个卷的问题,因为Id更喜欢干净的石板。
  • 将/ tmp装载到容器中的tmpfs。 似乎最理智的select。 除了这意味着编辑所有容器,而不是使用现有的容器

我是Docker的新手,也许我错过了一些明显的东西。

我search一种方法来指定在容器停止后可以或不得不放弃的卷。 甚至完全保存在RAM中,除非这是不可行的。 另外一些简单的方法来挂载/ tmp作为这样一个容器。

Docker 1.10将在2月初发布(第一个发布候选应该在下周末发布),这将允许你使用--tmpfs选项来完成这个--tmpfs

例如;

 docker run -it --tmpfs /tmp ubuntu 

有关更多信息,请参阅此function的拉取请求。 https://github.com/docker/docker/pull/13587

如果使用--privileged docker run --privileged选项运行该容器,则可以在容器的/tmp位置装载tmpfs分区:

 docker run -it --privileged ubuntu bash -l root@2ed296ef6a80:/# mount -t tmpfs -o size=256M tmpfs /tmp root@2ed296ef6a80:/# mount 

tmpfs on / tmptypestmpfs(rw,relatime,size = 262144k)


或者,您可以在docker主机上创build一个tmpfs挂载,并将其作为一个卷挂载到容器中:

 # TMPDIR=$(mktemp -d) # mount -t tmpfs -o size=256M tmpfs $TMPDIR # docker run -it -v $TMPDIR:/tmp ubuntu bash -l root@0f0555ec96cb:/# mount | grep /tmp 

tmpfs on / tmptypestmpfs(rw,relatime,size = 262144k)