docker和“volatile volumes”ala / tmp

时间:2016-01-09 20:36:01

标签: docker

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

我希望这个容器/ tmp不被持久性卷(union fs或volume)支持,而是使用主机的/ tmp,而tmp又是一个tmpfs卷,非常适合这种操作。保存对普通驱动器的访问会产生开销并导致访问HDD(磨损),我宁愿尽可能地留在RAM中。

有些选择是:

  • 将/ tmp /:/ tmp绑定到docker进程。似乎非常安全,如果另一个进程访问此目录,则会出现问题
  • 将卷绑定到/ tmp。这意味着它在硬盘上,除非我设法将它移动到/ tmp。 然后,每次容器停止时仍然存在删除此卷的问题,因为Id更喜欢干净的平板。
  • 将/ tmp挂载为容器中的tmpfs。似乎是最理智的选择。除了这意味着编辑所有容器而不是明确地使用现有容器

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

我搜索一种方法来指定容器停止后可以或必须删除的卷。甚至完全保留在RAM中,除非这是不可行的。 另外还有一些简单的方法来安装/ tmp作为这样的容器。

2 个答案:

答案 0 :(得分:25)

Docker 1.10将于2月初发布(首批候选版本将于下周末发布),允许您使用--tmpfs选项执行此操作。

例如;

docker run -it --tmpfs /tmp ubuntu

有关详细信息,请参阅此功能的pull-request; https://github.com/docker/docker/pull/13587

答案 1 :(得分:2)

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

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

...

     

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

或者您可以在docker主机上创建 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 / tmp type tmpfs(rw,relatime,size = 262144k)