Dockerファイルを使用して作成されたドッカーイメージがあるとします。 Dockerfileを書いているとき、私は何が間違っていたかを理解するために繰り返しテストしなければなりませんでした。ドッカー画像をデバッグするには、単にテストコンテナを実行し、stdout/stderrを見て、何が問題なのかを確認するだけです。オープンシフトを使用してコンテナイメージをデバッグする方法
IMAGE_NAME=authoritative-dns-bind
IMAGE_OPTIONS="
-v $(pwd)/config.yaml:/config.yaml:ro
-p 127.0.0.1:53:53
-p 127.0.0.1:53:53/udp"
docker run -t -i $IMAGE_OPTIONS $IMAGE_NAME
上記のことは、最小限の作業Dockerコンテナを繰り返し作成してデバッグするのに十分であることを覚えておいてください。今私はOpenShiftで同じことをする方法を探しています。
私は、コンテナがOpenShiftの準備ができていないという事実をよく知っています。ドッカーと同じように、私の計画はそれを実行し、stdoud/stderrを見ることです。私が助けを求めた人々の一人が、私が必要とするもののように見える命令を思いついた。
oc run -i -t --image $IMAGE_NAME --command test-pod -- bash
そして、上記のコマンドは、ドッキングウィンドウのレジストリからfedora:24
とfedora:latest
画像のために私のためのようで、私が働いてシェルを得ました。しかし、コンテナ化されたサービスで私の派生したイメージには同じことは起こりません。私の説明は、おそらくまったく別のことです。対話的にコマンドを開始するのではなく、対話的に起動し、失敗したコンテナ内でbash
を実行しようとします。
私が探しているのは、OpenShiftでコンテナイメージをデバッグする合理的な方法です。 OpenShiftコンテナのstdin/stdoutを少なくともキャプチャして表示できると思っていました。
アイデア?
更新
グラハムoc run
によってコメントによると、確かにdocker run
として動作するはずですが、ケースではないようです。オリジナルのFedoraイメージでは、少なくともbashを打つとbashが表示されます。
# oc run -i -t --image authoritative-dns-bind --command test-auth13 -- bash
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
...
Waiting for pod myproject/test-auth13-1-lyng3 to be running, status is Pending, pod ready: false
^C
#
私はそれだけの単純な画像よりも多くの設定を必要としているようだと、まだ提案さoc debug
を試してみることができませんでした。 oc run
には別の問題があります。そのコマンドは、私が本当に必要としない新しいコンテナと新しいコンテナを作成するためです。デバッグを簡単に開始し、その後コンテナを自動的に破棄する方法があることを願っています。
"コンテナ化されたサービスで私の派生したイメージには起こりません"と言うと、実際に何を見ていましたか?コマンドで '' oc run''を使うときは、何も起動してはならず、与えたコマンドだけを実行するべきです。だからすでに何も失敗していない可能性があります。また、イメージに含まれるアプリケーションを配備しようとしている場合は、 '' oc debug dc mydcname''を使用することもできます。これにより、実際のアプリケーション取得と同じ設定でコンテナが起動しますが、アプリケーションの代わりに端末セッションとシェルが実行される点が異なります。 –