新しい Docker コンテナで Bash ターミナルを起動する
Docker コンテナーは、アプリケーションのすべての依存関係をパッケージ化するための標準ユニットであり、どのような環境でも簡単に実行できます。コンテナは最近非常に人気があり、ほとんどの開発者は現在、アプリケーションと依存関係を管理するためにコンテナに大きく依存しています。
Docker は、Docker コンテナー内で bash ターミナルを起動することにより、シェルインスタンスにアクセスするための複数の方法を提供します。これは、Docker コンテナ内でいくつかのコマンドを実行するときに特に役立ちます。
さらに、これはデバッグ上の理由である場合もあれば、すべてが適切に構成されているかどうかを確認したい場合もあります。この記事では、実行中のコンテナーと実行されていないコンテナーに対してこれを行うために使用できるさまざまな方法について説明します。
Bash Interactive Shell を使用する
Bash は、Linux システムで一般的なコマンドプロセッサであり、ユーザーがアクションを引き起こすコマンドを入力できるようにします。Unix ベースのシステムまたは WSL と何らかのやり取りをした場合は、bash を介してさまざまなコマンドを操作する可能性があります。
同様に、Docker コンテナ内の Linux ターミナルに直接アクセスして、通常の Linuxbash の場合と同じようにコマンドを実行することもできます。このメソッドの利点の 1つは、docker exec
コマンドなどの他のコマンドとは異なり、実行されていないコンテナーでこれを実行できることです。
以下に示すように、Docker レジストリの公式の rabbitmq
イメージを使用して、Docker コンテナを作成し、コンテナ内の bash に直接アクセスします。これは他のコマンドで実行できます。事前にイメージを用意しておく必要があります。
docker pull rabbitmq
docker images
イメージができたので、Docker コンテナをインタラクティブに作成できます。これは、以下に示すように、実行中に docker コンテナー内でコマンドを実行できることを意味します。
$ docker run -it rabbitmq bash
出力:
root@f418a3286aae:/#
ご覧のとおり、これで Docker コンテナー内に移動し、新しいコンテナー内で bash を実行することに成功しました。これで、実際の端末で作業しているかのようにコマンドを実行できます。
たとえば、以下に示すように、このコンテナ内のファイルとディレクトリを一覧表示できます。
root@f418a3286aae:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt plugins proc root run sbin srv sys tmp usr var
root@f418a3286aae:/#
docker exec
コマンドを使用する
または、docker exec
コマンドを使用して、新しい docker コンテナー内で bash を実行することもできます。ただし、以前の方法とは異なり、このコマンドでは、コンテナがすでに実行されている必要があります。そうしないと、コマンドは機能しません。
docker ps -a
コマンドを使用して、コンテナーが実行されていることを確認します。使用するコンテナーが実行されていない場合は、docker start
コマンドに続けてコンテナーID または名前を使用してコンテナーを開始することをお勧めします。
docker ps
-it
タグと一緒に docker exec
コマンドを使用します。exec
コマンドを使用すると、実行中のコンテナーに対してコマンドを実行できます。-it
タグを使用すると、コンテナーを対話形式で開くことができます。
以下のように実行できます。
$ docker exec -it f418a3286aae bash
出力:
root@f418a3286aae:/# ls
bin boot dev etc home isaac lib lib32 lib64 libx32 media mnt opt plugins proc root run sbin srv sys tmp tonyloi usr var
この Docker コンテナ内で bash を正常に起動したので、コンテナ内からさまざまなコマンドを実行できます。あるいは、bash のないコンテナには sh
を使用できます。
これは、コンテナ内でコマンドを実行できる基本的なシェルプロンプトを開くコマンドでもあります。
$ docker exec -it f418a3286aae sh
出力:
# ls
bin boot dev etc home isaac isaactonyloi lib lib32 lib64 libx32 media mnt opt plugins proc root run sbin srv sys tmp tonyloi usr var
docker attach
コマンドを使用する
docker attach
コマンドを使用して、実行中の docker コンテナー内で bash を起動することもできます。これにより、コンテナーの ID を使用して、実行中のコンテナーにローカル標準の入力、出力、およびエラーストリームをアタッチできます。
その後、さまざまなコマンドを実行し、入力を受け入れ、指定されたコンテナをデバッグできます。出力、入力、およびエラーストリームをアタッチするために、実行中のコンテナが必要です。
以下に示すように、コンテナ名または ID を使用してこれを実装できます。
コード:
$ docker container attach f418a3286aae
出力:
root@f418a3286aae:/# ls
bin boot dev etc home isaac isaactonyloi lib lib32 lib64 libx32 media mnt opt plugins proc root run sbin srv sys tmp tonyloi usr var
root@f418a3286aae:/#
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