Docker コンテナのシェルに入る
-
docker exec
を使用して Docker コンテナのシェルに入る -
docker container attach
を使用して Docker Container のシェルに入る - Secure Shell(SSH)を使用して Docker コンテナのシェルに入る
このチュートリアルでは、複数の方法を使用して Docker のコンテナーシェルに入る方法を示します。
docker exec
を使用して Docker コンテナのシェルに入る
このコマンドを使用するには、コンテナを起動して実行する必要があります。以下のコマンドを使用して、システム内のコンテナのステータスを確認できます。
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38086474cb6c debian "bash" 2 days ago Exited (0) 2 days ago epic_jackson
1c955bac1a84 ubuntu "bash" 2 days ago Exited (0) 2 days ago musing_morse
1296f9b9d330 nginx "/docker-entrypoint.…" 2 days ago Exited (255) 2 days ago 80/tcp distracted_napier
実行中のコンテナがない場合は、簡単に作成できます。rabbitmq
ベースイメージを使用してコンテナを設定します。
次に示すように、コンテナを作成する前に、docker pull
コマンドを使用してレジストリからベースイメージをプルすることから始めます。
$ docker run -d rabbitmq
出力:
Dcad9f270643802092ab525796897c357026767863dade831e8c7d7d82c45712
これで、実行中のコンテナができました。繰り返しになりますが、docker ps
コマンドを使用して確認できます。
$ docker ps -a
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcad9f270643 rabbitmq "docker-entrypoint.s…" About a minute ago Up 57 seconds 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp inspiring_moore
-it
タグと一緒に docker exec
コマンドを使用して、コンテナーに入力したり、ファイルを操作したり、デバッグを実行したりします。
exec
コマンドを使用すると、実行中のコンテナーに対してコマンドを実行できます。-it
タグを使用すると、コンテナーをインタラクティブに開くことができます。
最後に、sh
コマンドは、コンテナ内でコマンドを実行するための基本的なシェルプロンプトを開きます。
isaactonyloi@DESKTOP-HV44HT6:~$ docker exec -it dcad9f270643 sh
#
Docker コンテナーに入ったので、コンテナー内からさまざまなコマンドを実行できます。exit
コマンドを入力し、Enter キーを押してこのモードからメインターミナルに戻ります。
docker container attach
を使用して Docker Container のシェルに入る
docker container attach
コマンドを使用して、実行中のコンテナーに接続することもできます。これにより、コンテナーの ID を使用して、ターミナルの出力、入力、およびエラーストリームを実行中のコンテナーにアタッチできます。
その後、さまざまなコマンドを実行し、入力を受け入れ、指定されたコンテナをデバッグできます。前述のように、出力、入力、およびエラーストリームをアタッチするための実行中のコンテナが必要です。
この目的のために、以下に示すように docker ps
を使用します。前のセクションの rabbitmq
コンテナを引き続き使用しています。
$ docker ps -a
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcad9f270643 rabbitmq "docker-entrypoint.s…" 39 minutes ago Up 38 minutes 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp inspiring_moore
Docker コンテナが停止した場合は、ここで行ったように、最初に docker start
コマンドを使用して Docker コンテナを起動する必要があります。
$ docker start dcad9f270643
dcad9f270643
これで、Docker コンテナーが期待どおりに機能しない場合は、docker container attach
を実行して、コンテナー内で何が起こっているかを確認できます。
$ docker container attach dcad9f270643
出力:
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> Server startup complete; 3 plugins started.
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_prometheus
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_web_dispatch
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_management_agent
Secure Shell(SSH)を使用して Docker コンテナのシェルに入る
最後に、一般に SSH と略されるセキュアシェルを使用して、コンテナ内でコマンドを実行することもできます。ただし、これはベースイメージにインフレーションを引き起こし、構成の問題が発生する可能性があるため、最も推奨されない方法です。
さらに、この方法では、自分でキーを管理する必要があるため、セキュリティ上の問題が発生します。また、一部のイメージはこの方法を本質的にサポートしていない可能性があるため、さらに構成が必要になる可能性があることも考慮する必要があります。
ただし、この方法を使用する必要がある場合は、次の手順に従う必要があります。
-
最初に、SSH サービスをインストールして有効にする必要があります。
-
次に、コンテナの IP アドレスを取得する必要があります。
-
最後に、取得した IP アドレスを使用してコンテナに SSH で接続します。
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn