2017-10-02 13 views
0

私はdocker-composeを使用して実行しているイメージの対話シェルを実行しようとしています。Dockerインタラクティブシェルを実行しています

私は私がプライベートリポジトリからクローンを作成できるように、ドローン内部のSSHキーを生成しようとしているドッキングウィンドウ・ランとドッキングウィンドウ-execの

[email protected]:~$ 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" 

[email protected]:~$ sudo docker run -it drone/drone:0.7 /bin/bash 
No help topic for '/bin/bash' 

を試してみました。

+0

@larsksの答えは正しい答えですが、私は無人機が '無人機/無人機 '画像の中であなたのリポジトリをクローン化しないという事実を拡張したかったのです。したがって、 '無人機/無人機 'イメージにSSHキーを追加しても影響はありません。代わりに、無人機の秘密(公式ドキュメントを参照)を使用してリポジトリに秘密鍵を登録し、実行時にプライベートgit + sshリポジトリをクローンすることができます。あるいは、git + httpsを使用して、通常はゼロ設定でサポートされる依存関係をクローンします。 –

答えて

4

ここではいくつかのことが起こっています。私は第一、第二のエラーを見てみたいのですが:

drone/drone画像が自動的に(あなたがdocker inspectを使用してEntrypointキーを探すことで決定することができます)/droneコマンドを実行するように設定されています。あなたが実行するのであれば:

docker run drone/drone:0.7 help 

をあなたは、コンテナ内で、実行中の終わる:

drone help 

そしてもちろん、あなたが実行した場合:

docker run drone/drone:0.7 /bin/bash 

あなたは、コンテナに、実行されています:

drone /bin/bash 

あなたのエラーメッセージdroneコマンドに認識できないオプションを渡しているので、「/ bin/bash」のヘルプトピックは表示されません。


最初のエラーははるかに簡単です。あなたのエラーメッセージは次のとおりです:

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 - 

は何 /bin/bash、ノー ssh、ノー git、ありません
.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/ 

をなど、あなたので、あなたの現在の計画には大したことはないでしょう。ホスト上のリモートリポジトリを複製し、ホストボリュームマウント(-v /host/path:/container path)を使用してコンテナに公開するか、必要なツールが含まれているカスタムイメージを構築することを検討してください。

+0

この回答にスポットがあります。デバッギング目的でシェルが必要な場合に使用できる '無人機/無人機:0.8アルパイン '画像があることに注意してください。 –

関連する問題