gpt4 book ai didi

lxc - 在同一个 Docker 容器中运行一系列复杂的命令

转载 作者:行者123 更新时间:2023-12-04 17:22:37 29 4
gpt4 key购买 nike

我正在尝试使用 Docker 自动执行以下循环:生成一个容器,在其中执行一些工作(多个命令),从容器中获取一些数据。

类似的东西:

for ( i = 0; i < 10; i++ )
spawn a container
wget revision-i
do something with it and store results in results.txt

根据我应该使用的文档:
for ( ... )
docker run <image> <long; list; of; instructions; separated; by; semicolon>

不幸的是,随着指令列表的复杂性增加,这种方法既不吸引人,也不可维护。

将指令包装在脚本中,如 docker run <image> /bin/bash script.sh也不起作用,因为我想生成一个 新品 循环的每次迭代的容器。

总结:
  • 是否有任何明智的方法来运行一系列复杂的
    上面描述的命令在同一个容器内?
  • 一旦某些数据保存在容器中,例如/home/results.txt,
    并且容器返回,我如何获得results.txt?我唯一的办法
    能想到的就是commit容器,把文件tar出来
    新图片。有没有更有效的方法来做到这一点?

  • 奖励:我应该使用 vanilla LXC 吗?虽然我没有任何经验,所以我不确定。
    谢谢。

    最佳答案

    我最终想出了一个适合我的解决方案,并极大地改善了我的 Docker 体验。

    长话短说 : 我用了Fabric的组合和一个运行 sshd 的容器。

    详情:

    这个想法是使用 Fabric 的本地运行 sshd 来生成容器,并使用 Fabric 的 run 在容器上运行命令。

    举一个(Python)例子,你可能有一个 Container 类:

    1) 一种在本地生成一个新容器并启动并运行 sshd 的方法,例如

    local('docker run -d -p 22 your/image /usr/sbin/sshd -D')

    2) 设置 Fabric 连接到正在运行的容器所需的 env 参数 - 检查 Fabric's tutorial有关更多信息

    3)编写您的方法以在利用Fabric的运行的容器中运行您想要的所有内容,例如
    run('uname -on')

    哦,如果你更喜欢 Ruby,你可以使用 Capistrano 来达到同样的目的。 .

    感谢@qkrijger (+1'd) 让我走上正轨:)

    关于lxc - 在同一个 Docker 容器中运行一系列复杂的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393846/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com