回答:
経由で入力してdocker run -it --entrypoint=/bin/bash $IMAGE -i
(イメージから新しいコンテナーを起動し、インタラクティブモードでbashシェルを取得します)、そのコンテナーでentrypointコマンドを実行します。
次に、実行中のコンテナを、実行中の状態で検査できます。
編集:Docker 1.3以降exec
では、実行中のコンテナーでプロセスを実行できます。通常どおりコンテナを起動し、次を発行してコンテナを入力します。
docker exec -it $CONTAINER_ID /bin/bash
bashがインストールされていると仮定すると、実行中のコンテナーへのシェルアクセスが許可されます。
-i
後があるの$IMAGE
ですか?
参照:https : //docs.docker.com/engine/reference/run/#overriding-dockerfile-image-defaults
関連部分:
CMD(デフォルトのコマンドまたはオプション)Dockerコマンドラインのオプションのコマンドを思い出してください:
$ docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
IMAGEを作成した人がDockerfile CMDを使用してデフォルトのコマンドをすでに提供している可能性があるため、このコマンドはオプションです。オペレーター(イメージからコンテナーを実行している人)として、新しいCOMMANDを指定するだけで、そのCMDをオーバーライドできます。
イメージでENTRYPOINTも指定されている場合、CMDまたはCOMMANDが引数としてENTRYPOINTに追加されます。
したがって、必要なことを行うには、cmdを指定し、を使用してオーバーライドするだけ/bin/bash
です。まったく「空」ではありませんが、99%の仕事を成し遂げます。
--login
する-l
ことを除けば、あなたのソリューションはすでにそれと同じくらい良いものだと思います。
1 ? Ssl 0:00 /usr/bin/geth echo setting up db
ここに来てエントリポイントとコマンドをオーバーライドして他のコマンドを渡すようにする人のために、たとえばエントリポイントスクリプトの代わりにbashを実行してからパラメータを使用して他のコマンドを実行します(他の回答からはわかりませんでした):
docker run [other options] --entrypoint '/bin/sh' $IMAGE -c 'npm link gulp gulp-sass gulp-sourcemaps'
-c 'npm link ...'
パラメータです/bin/sh
ので、ここでコンテナで実行したいコマンドを渡すことができます。/bin/sh
は高山の画像/bin/bash
用で、他の画像の場合がほとんどです。
'...'
二重引用符を使用"..."
/bin/sh
、あなたのものはそうではないかもしれません。