【问题标题】:AWS - Create and attach volume to container in flightAWS - 在飞行中创建卷并将其附加到容器
【发布时间】:2021-08-30 15:09:59
【问题描述】:

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

create/attach-volume可以在容器内运行,将快照卷添加到主机。我可以将作业定义为提前有一个挂载点,以便在挂载卷可用时访问它。问题是,我在容器中看不到让主机实际挂载附加卷的方法,所以它在/dev,但没有更多。

【问题讨论】:

    标签: amazon-web-services docker docker-volume aws-batch


    【解决方案1】:

    原来答案是管道。从这个答案修改: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 中设置绑定传播参数的另一种方法。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2019-04-10
      • 2016-03-30
      • 2020-07-20
      • 2019-03-23
      • 2021-12-08
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多