我正在尝试在 AWS 上设置 CoreOS,以便在启动时运行特定命令,以下载 DCOS 集群的信息 tarball 并运行其中包含的脚本。这些脚本有助于将实例作为“代理”添加到我们的 DC/OS 集群中。
但是,我似乎无法运行docker run命令。我确实看到 userdata 正在创建 tee 的输出文件(仍为空)以及/opt/dcos_install_tmp/目录(也为空)。
此处的 docker run 命令下载“awscli”容器,从 S3 获取包(使用 IAM 实例配置文件凭据),并将其吐出到 CoreOS 文件系统。
在 CoreOS 上安装 AWS CLI 似乎并不简单(没有包管理器,没有 python),所以我不得不求助于这个。
如果我登录到实例并通过将它们放入脚本中来运行相同的命令,我绝对没有问题。
我检查“journalctl --identifier=coreos-cloudinit”,没有发现任何问题。它只是报告:
15:58:34 Parsing user-data as script
与其他 AMI 不同,/var/log/中没有 CoreOS 的“启动”日志文件。
我现在真的陷入困境,希望能在正确的方向上得到一些插入。
这是我的用户数据(我在实例启动期间以文本形式发布):
#!/bin/bash
/usr/bin/docker run -it --name cli governmentpaas/awscli aws s3 cp s3://<bucket>/dcos/dcos_preconfig.sh /root && /usr/bin/docker cp cli:/root/dcos_preconfig.sh . && /usr/bin/docker rm cli | tee -a /root/userdatalog.txt
/usr/bin/docker run -it --name cli governmentpaas/awscli aws s3 cp s3://<bucket>/dcos/dcos-install.tar /root && /usr/bin/docker cp cli:/root/dcos-install.tar . && /usr/bin/docker rm cli | tee -a /root/userdatalog.txt
sudo mkdir -p /opt/dcos_install_tmp
sudo tar xf dcos-install.tar -C /opt/dcos_install_tmp | tee -a /root/userdatalog.txt
sudo /bin/bash /opt/dcos_install_tmp/dcos_install.sh slave | tee -a /root/userdatalog.txt
最佳答案
从 docker run 命令中删除 -t 标志。
我遇到了类似的问题:DigitalOcean: How to run Docker command on newly created Droplet via Java API 问题最终出在 docker run 命令中的 -t 标志。显然这不起作用,因为它不是终端或类似的东西。删除该标志,它就可以正常运行。
关于amazon-web-services - CoreOS AWS userdata "docker run"启动时无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40159742/