AWS-创建体积并将其附加到飞行中的容器



假设我在AWS中有一个容器化的批处理作业。它需要装载一个快照,用它做几个小时的工作,然后关闭。问题是,在创建模板/AMI时,特定的快照是未知的/更改的。正确的一个将被标记,并且在运行时很容易查找。如何安装?

create/attach-volume可以在容器中运行,将快照卷添加到主机中。我可以将作业定义为预先有一个装入点,以便在装入的卷可用时访问该卷。问题是,我看不到从容器中让主机实际装载连接的卷的方法,所以它在/dev中,但没有进一步的方法。

答案是一个管道。根据此答案进行修改:https://stackoverflow.com/a/63719458/2062731

将以下内容添加到user-data中可设置监控器。

mkfifo /var/mount_pipe
while true; do sudo mount $(cat /var/mount_pipe); done &

mount_pipe绑定安装到容器,命令从容器内发送,如echo "/dev/sdh /mnt/foo" > /var/pipe

额外的好处:为了确保新安装的卷在容器中可见,您需要将传播集绑定到AWS不直接支持的非私有卷。在作业定义中定义装入点时,请使用

ContainerPath: "/mnt/foo:rslave" # Add a `:` to push extra args.

由于arg被原封不动地传递给docker代理,因此最终产品将是--volume /mnt/foo:/mnt/foo:rslave。这是未记录的,所以要小心,但我不知道在AWS中设置绑定传播参数的其他方法。

最新更新