小编Nor*_*nge的帖子

docker和"volatile volume"ala/tmp

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

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

一些选项是:

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

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

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

docker

16
推荐指数
1
解决办法
2万
查看次数

为什么不设置-e导致`false ||失败 假&& true`?

无法弄清楚合适的标题,我不明白dash/bash中的行为.即,如果命令失败,我使用set -e来挽救,并且命令组处理肯定结果.

即.一般方案是:

[ ! wantcommand ] || command
Run Code Online (Sandbox Code Playgroud)

比意味着命令仅在需要时才被执行,并且失败将自动终止脚本.

可能需要一些后处理,在这种情况下我使用它:

[ ! wantcommand ] || { command && postprocess; }
Run Code Online (Sandbox Code Playgroud)

这导致了一些好奇的bughunting,因为这不会杀死壳,我无法得到原因.我现在必须经历一些shell代码,但是想了解原因.

用于检测:

bash -c 'set -e; { false || false && echo "post" ; }; echo "ec $?"'
Run Code Online (Sandbox Code Playgroud)

要么:

bash -c 'set -e; { set -e; false || false && echo "post" ; }; echo "ec $?"'
Run Code Online (Sandbox Code Playgroud)

注意:我不是要求修复,但主要原因是返回码为1,但shell不会退出

linux bash shell

4
推荐指数
1
解决办法
77
查看次数

标签 统计

bash ×1

docker ×1

linux ×1

shell ×1