[解決済み】Dockerコンテナのファイルシステムを調査する
質問
dockerを使っていて気づいたのですが、コンテナの中で何が起こっているのか、どんなファイルが存在するのかを理解する必要があります。その一例が、docker インデックスからのイメージのダウンロードです。イメージに何が含まれているか分からないので、アプリケーションを起動することができません。
理想的なのは、そこにsshで入るか、それに準ずることができるようになることです。これを行うためのツールはあるのでしょうか。それとも、これができるはずだという私のドッカーに対する概念が間違っているのでしょうか。
解決方法は?
いくつかの方法を紹介しますと...
A) docker execを使用する (最も簡単)
Docker バージョン 1.3 以降では、以下のコマンドをサポートしています。
exec
と同じような動作をする
nsenter
. このコマンドは、すでに実行中のコンテナで新しいプロセスを実行することができます(コンテナは、すでに実行中のPID 1プロセスを持っている必要があります)。このコマンドで実行できるのは
/bin/bash
を使用して、コンテナの状態を調べることができます。
docker exec -t -i mycontainer /bin/bash
B) スナップショットを利用する
この方法でコンテナファイルシステムを評価することができます。
# 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
C) 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を使ってアプリを実行することができます(接続して好きなものを実行する)。
D) nsenterを使用する
使用方法
nsenter
を参照してください。
DockerコンテナでSSHdを実行する必要がない理由
簡単に説明すると、nsenterを使うと、シェルを 既存のコンテナで、SSHやその他の種類のコンテナが動作していなくても 特殊用途のデーモン
関連
-
[解決済み] Nautilusのようにコマンドラインからマウントする方法とは?[クローズド]です。
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】CentOSのエラー - sudo: effective uid is not 0, is sudo installed setuid root?
-
[解決済み】sed を使用して部分文字列を抽出する方法
-
[解決済み] pkg-configが見つからないエラー
-
[解決済み】git clone時に「'https'のリモートヘルパーが見つかりません。
-
[解決済み] Ubuntuにchkconfigをインストールするにはどうしたらいいですか?
-
[解決済み] 共有メモリページとフォーク
-
[解決済み] エラー: gdal がインストールされているのに、R 依存パッケージのインストール中に gdal-config が見つからない
-
[解決済み] 圧縮データが無効です。
-
[解決済み] ユーザーデータスクリプトは私のカスタムAMIでは動作しませんが、標準のAmazon linuxでは動作しています。
-
[解決済み] dockerイメージの内容を確認する方法