2017-09-28 4 views
0

私の記事を読んでいただきありがとうございます。ドッキングする方法は、ドッカーコンテナの組み込みのシェルをUbuntuのドッカーのイメージ/コンテナに組み込むことです

問題:

# docker ps 
CONTAINER ID  IMAGE     COMMAND    
35c8b832403a  ubuntu1604:1 "sh -c /bin/sh"  

# docker exec -i -t 35c8b832403a type type 
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:262: starting container process caused "exec: \"type\": executable file not found in $PATH" 

# Dockerfile 
FROM ubuntu:16.04 

ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
RUN apt-get update && apt-get -y upgrade 
ENTRYPOINT ["sh", "-c"] 
CMD ["/bin/bash"] 

説明:私の目標は、 "タイプ" シェル組み込みが

ドッカ幹部以下のようにドッカexecを書くの方法で実行して取得することです

-i -t 35c8b832403aタイプタイプ(FAILED)

ませ

ドッカ幹部-i -t 35c8b832403aのsh -c "type型"(PASSED)

私の周りグーグルでてきたが、コンテナ(変更は/ etc/profileは、/ etc /環境の中でいくつかの修正を行います、bashrc)、失敗しました。

ドッキングウィンドウのドキュメント自体から、それはという状態があります。

COMMANDは、コンテナのデフォルトのディレクトリで実行されます。 の下にあるイメージには、DockerfileにWORKDIR 指示文で指定されたカスタムディレクトリがありますが、これが代わりに使用されます。

COMMANDは実行可能、連鎖または引用されたコマンドでなければなりません は機能しません。例:EXEC -ti my_containerをドッキングウィンドウ "& &をエコー Bをエコー" は動作しませんが、ドッキングウィンドウ幹部-ti my_containerのsh -cます "& & エコーbをエコー"。

しかし、それは可能です思え私はドッカーFEDORA右から出力を取得することができ(Dockerfile:Fedoraの:25)

# docker ps 
CONTAINER ID  IMAGE     COMMAND    
2a17b2338518  fedora25:1 "sh -c /bin/sh" 

# docker exec -i -t 2a17b2338518 type type 
type is a shell builtin 

質問:

はですUbuntuドッカーでこれを有効にする方法はありますか?画像/コンテナの微調整? Vagrantfileの設定?助けてください。

その他:

ドッキングウィンドウの実行を使用して、私は可能なので、Dockerfileで「ENTRYPOINT」の右出力を取得します。ただしイメージはエクスポートの代わりに保存する必要があります

答えて

0

docker execを実行すると、CMDとENTRYPOINTは無意味です。残りの引数はコマンドとして取り込まれ、既存のコンテナ内で実行されます。

おそらくdocker runを使いたかったでしょうか?

+0

あまりにも悪いです。ユースケースの問題は引数 'type type'で' docker exec'を使うことです – sangelion

0

期待どおりに型を実行できるようにするには、パスの一部である必要があります。あなたが言ったように、あなたはtypeは、組み込みシェルコマンドとして実行したい場合は/bin/bash -c 'type type'

を実行したくないので、シェルの組み込みが役に立たないであることは、これはあなたがシェルを実行する必要があることを意味/bin/bashまたは/bin/shとその後、すべての後に、それは/bin/bash -c 'type type'

作り、その上に「型type」を実行、@Henryとしてドッキングウィンドウの幹部が実行される完全なコマンドで、その上にCMDまたはENTRYPOINTのための場所がない、と述べました。

+0

もし私が間違っていたら私を訂正してください... 'docker exec"タイプのタイプを '' only ''で使うのは不可能ですか?その 'docker exec"/bin/bash -cタイプタイプ "'を実行するために/ bin/{bash、sh} -cをインクルードします。どのようにFedoraのイメージ/コンテナがこれをサポートできるようになりますか?私はさらにFedoraのイメージ/コンテナをタイプチェックしています。これらは 'buildin type" $ @ "'でシェルで書かれた/ bin/typeを持っていますが、残念ながらbuildinのために/ binは作成されていません。今回はビルドインには不満がありました。 – sangelion

+0

あまりにも悪いです。ユースケースの問題は、引数 'type type'で' docker exec'を使うことです。 – sangelion

+0

私が言ったように、 'type type'を実行したい場合は' type'というバイナリがそのパスに存在するはずです。他の方法はありません。また、そのタイプをシェル組み込み関数とみなして、特定のバイナリだけを持つ方法を見つけられなかったので、その名前でパスにシェルをトリガーするスクリプトを生成する唯一の方法を言っていますコマンド。 – txomon

関連する問題