コンテナを作成したので、-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
) がバックグラウンドで実行され、コンテナがすぐには停止しないことを意味します。