UPDATE
最も簡単な方法:docker execを使用する
Dockerバージョン1.3以降は、exec
と同様に動作するコマンドをサポートしていますnsenter
。このコマンドは、すでに実行中のコンテナで新しいプロセスを実行できます(コンテナには、すでに実行されているPID 1プロセスが必要です)。実行/bin/bash
してコンテナの状態を調べることができます。
docker exec -t -i mycontainer /bin/bash
Dockerコマンドラインドキュメントを参照してください
代替方法1
スナップショット
この方法でコンテナファイルシステムを評価できます。
# find ID of your running container:
docker ps
# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot
# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash
このようにして、実行中のコンテナのファイルシステムを正確なタイミングで評価できます。コンテナはまだ実行中で、将来の変更は含まれていません。
後でスナップショットを削除できます(実行中のコンテナーのファイルシステムは影響を受けません!):
docker rmi mysnapshot
代替方法2
ssh
継続的なアクセスが必要な場合は、sshdをコンテナーにインストールして、sshdデーモンを実行できます。
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
このように、sshを使用してアプリを実行できます(接続して必要なものを実行します)。
更新:代替方法3
nsenter
を使用nsenter
します。https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/を参照してください
短いバージョンは次のとおりです。nsenterを使用すると、既存のコンテナーがSSHまたは任意の種類の専用デーモンを実行していない場合でも、シェルを既存のコンテナーに入れることができます。
docker exec <container> bash
。したがって、コンテナー内のシェルを開くだけです。