既存の Docker コンテナでコマンドを実行するにはどうすればいいですか? 質問する

既存の Docker コンテナでコマンドを実行するにはどうすればいいですか? 質問する

コンテナを作成したので、-dインタラクティブではありません。

docker run -d shykes/pybuilder bin/bash

コンテナが終了したことがわかります:

CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                      PORTS               NAMES
d6c45e8cc5f0        shykes/pybuilder:latest   "bin/bash"          41 minutes ago      Exited (0) 2 seconds ago                        clever_bardeen

ここで、マシン上で時々コマンドを実行して終了したいと思います。応答を取得するためだけに。

マシンを起動してみました。アタッチしてみました。コンテナで呼び出せると思ったのですrunが、それはできないようです。startただ実行するとすぐに消えてしまうようです。

終了した後、対話モードに戻りたいです。

私は試した:

docker attach d6c45e8cc5f0

しかし、私はこう思います:

2014/10/01 22:33:34 You cannot attach to a stopped container, start it first

しかし、起動すると、いずれにせよ終了してしまいます。ジレンマです。勝てません。

ベストアンサー1

2014年10月、Dockerチームがdocker execコマンドを導入:https://docs.docker.com/engine/reference/commandline/exec/

これで、ID (または名前) がわかっていれば、実行中のコンテナ内で任意のコマンドを実行できるようになります。

docker exec -it <container_id_or_name> echo "Hello from container!"

コマンドはすでに実行中のコンテナでのみ機能することに注意してくださいexec。コンテナが現在停止している場合は、まず次のコマンドでコンテナを実行する必要があります。

docker run -it -d shykes/pybuilder /bin/bash

ここで最も重要なのは-d、 を表すオプションですdetached。これは、最初にコンテナに指定したコマンド ( /bin/bash) がバックグラウンドで実行され、コンテナがすぐには停止しないことを意味します。

おすすめ記事