【问题标题】:Docker run doesn't work as part of a terraform startup scriptDocker run 不能作为 terraform 启动脚本的一部分
【发布时间】:2021-05-05 18:16:21
【问题描述】:

我正在使用 terraform 一次配置一堆机器。每个都应该运行相同的 docker 容器。启动脚本如下所示:

sudo apt-get remove docker docker-engine docker.io containerd runc -Y
sudo apt-get update -Y
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common -Y

curl https://get.docker.com | sh && sudo systemctl --now enable docker

sudo docker build -t dockertest /path/to/dockerfile
sudo docker run --gpus all -it -v /path/to/mount:/usr/src/app dockertest script.py -b 03

基本上它会安装 docker,然后构建容器,然后运行它。

只有最后一行不起作用。如果我 ssh 进入机器,它工作正常。但不是作为启动脚本的一部分。

如何让它作为启动脚本的一部分工作? ssh 连接到每台机器很麻烦。

【问题讨论】:

  • 这是作为 cloud-init/user 数据还是类似的东西运行?还是作为远程执行供应商?您能否以minimal reproducible example 的形式分享您的 Terraform 代码?理想情况下,这应该只是虚拟机的创建以及您执行此脚本的方式。
  • 每个系统日志,看起来它是通过 cloud_init 完成的。不知道 terraform MRE。这是工程师制作的一个巨大的回购。作为数据科学家,我只是更改了 startup.sh(上图)和 terraform.tfvars 中的内容
  • 您似乎需要将sudo docker run 命令改为创建服务的东西(例如通过systemd),然后启动并启用它(以便它在重新启动时启动)也是。
  • 这会让我开始

标签: azure docker terraform


【解决方案1】:

如果其他人遇到这个问题:解决方法就是将-itdocker run命令中去掉。

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多