运行Docker Interactive Shell

时间:2017-10-02 12:38:18

标签: bash docker docker-compose drone.io

我正在尝试为使用docker-compose运行的图像运行交互式shell。

我尝试过docker-run和docker-exec

xyz@abc:~$ sudo docker exec -it 235197ff4f0e /bin/bash
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:262: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory"

xyz@abc:~$ sudo docker run -it  drone/drone:0.7 /bin/bash
No help topic for '/bin/bash'

尝试在无人机内生成ssh密钥,以便我可以从私有存储库进行克隆。

1 个答案:

答案 0 :(得分:6)

这里有几件事情。我想先看看第二个错误:

drone/drone映像配置为自动运行/drone命令(您可以使用docker inspect确定并查找Entrypoint密钥)。所以如果你跑:

docker run drone/drone:0.7 help

你最终在容器内运行:

drone help

当然,如果你跑:

docker run drone/drone:0.7 /bin/bash

您正在容器中运行:

drone /bin/bash

因此您看到的错误消息("没有' / bin / bash'"的帮助主题),因为您将一个无法识别的选项传递给{{1} }命令。

第一个错误要简单得多。您的错误消息是:

drone

这似乎很清楚。没有 exec: \"/bin/bash\": stat /bin/bash: no such file or directory 。实际上,如果你检查图像的内容,你会发现只有一个最小的文件系统。最简单的方法是启动容器,然后使用/bin/bash,如下所示:

docker export

向您展示:

$ docker run drone/drone:0.7 help
[...output doesn't matter...]
$ docker export $(docker ps -lq) | tar tf -

没有.dockerenv dev/ dev/console dev/pts/ dev/shm/ drone etc/ etc/hostname etc/hosts etc/mtab etc/resolv.conf etc/ssl/ etc/ssl/certs/ etc/ssl/certs/ca-certificates.crt proc/ sys/ ,没有/bin/bash,没有ssh等等,所以你现在的计划没有太多运气。您可能需要考虑在主机上克隆远程存储库,然后使用主机卷装载(git)将它们暴露给容器,或者构建包含所需工具的自定义映像。