ウェブサイト検索

Docker コンテナ内でアプリケーションをインストール、実行、削除する方法 - パート 2


前回のDocker記事に続き、このチュートリアルでは、Docker コンテナを新しいイメージに保存し、コンテナを削除し、 コンテナ内でNginx Web サーバーを実行する方法について説明します。

要件

  • CentOS/RHEL 8/7 で Docker をインストールしてコンテナを実行する方法 – パート 1

Docker コンテナを実行して保存する方法

1. この例では、Nginx サーバーがインストールされるUbuntu ベースの Docker コンテナを実行して保存します。ただし、コンテナに変更をコミットする前に、まず以下のコマンドを使用してコンテナを起動し、Nginx デーモンを更新して Ubuntu イメージにインストールします。

# docker run ubuntu bash -c "apt-get -y update" 
docker run ubuntu bash -c "apt-get -y install nginx" 

エラー「E: パッケージ nginx が見つかりません」が発生した場合は、対話型 CLI を使用してコンテナに接続し、示されているように nginx をインストールする必要があります。

# docker run -it ubuntu bash
apt install nginx
exit

2. 次に、Nginx パッケージをインストールした後、コマンド docker ps -l を発行してID を取得するか、実行中のコンテナの名前

# docker ps -l

そして、以下のコマンドを実行して変更を適用します。

# docker commit 5976e4ae287c ubuntu-nginx

ここで、5976e4ae287c はコンテナの ID を表し、ubuntu-nginx はコミットされた変更とともに保存された新しいイメージの名前を表します。

新しいイメージが正常に作成されたかどうかを確認するには、docker Images コマンドを実行するだけです。保存されたすべてのイメージのリストが表示されます。

# docker images

コンテナー内のインストール プロセスが早く終了し、コンテナーが実行されなくなる (コンテナーが停止する) 可能性があります。この場合、コンテナが実行されていないため、docker ps コマンドは出力を表示しません。

コンテナーの ID を取得できるようにするには、 docker ps -a | を実行します。 head -3 は、最新のコンテナを出力し、コンテナを作成するために発行されたコマンドと終了ステータスに基づいてコンテナを識別します。

3. または、docker run -it ubuntu bash コマンドを実行してアクティブにコンテナ セッションに入り、さらに apt-get install nginx コマンドを実行することもできます。 。コマンドの実行中に、Ctrl-p + Ctrl-q キーを使用してコンテナから切り離すと、Nginx のインストール プロセスが終了してもコンテナは実行を継続します。

# docker run -it ubuntu bash
apt-get install nginx

次に、docker ps で実行中のコンテナ ID を取得し、変更をコミットします。完了したら、dockerattach を使用してコンテナ コンソールに戻り、exit と入力してコンテナを停止します。

# docker ps
docker attach 3378689f2069
exit

4. 最近のイメージが適切にコミットされているかどうかをさらにテストするには (この場合は Nginx サービスがインストールされています)、次のコマンドを実行して新しいコンテナを生成します。 Nginx バイナリが正常にインストールされた場合は次のように出力されます。

# docker run ubuntu-nginx whereis nginx

5. コンテナを削除するには、コンテナ ID または名前に対して rm コマンドを使用します。コンテナ ID または名前は、docker ps -a コマンドを使用して取得できます。

# docker ps -a
sudo docker rm 36488523933a

Dockerコンテナ内でNginxを実行する方法

6. このパートでは、ubuntu- を使用して、Docker 内で Nginx Web サーバーなどのネットワーク サービスを実行し、アクセスする方法に焦点を当てます。 nginx イメージは、Nginx デーモンがインストールされた場所に以前に作成されました。

最初に行う必要があるのは、新しいコンテナーを作成し、ホストとコンテナーのポートをマップし、以下のコマンドを発行してコンテナー シェルを開始することです。

# docker run -it -p 81:80 ubuntu-nginx /bin/bash
nginx &

ここで、-p オプションはホスト ポートをコンテナ ポートに公開します。ホスト ポートは、利用可能でなければならない (他のホスト サービスがリッスンしない) という条件付きで任意に指定できますが、コンテナ ポートは、内部デーモンがリッスンしているポートと正確に同じである必要があります。

コンテナ セッションに接続したら、バックグラウンドで Nginx デーモンを起動し、Ctrl-p + Ctrl-q キーを押してコンテナ コンソールから切断します。

7. 次に、docker ps を実行して、実行中のコンテナの状態を取得します。次のコマンドを実行して、ホスト ネットワーク ソケットを表示することもできます。

# docker ps
OR
netstat -tlpn 

8. Nginx コンテナによって提供されるページにアクセスするには、LAN 内のリモートの場所からブラウザを開き、HTTP プロトコルを使用してマシンの IP アドレスを入力します。

9. コンテナを停止するには、次のコマンドに続けてコンテナ ID または名前を実行します。

# docker ps
docker stop fervent_mccarthy
docker ps

実行中のコンテナーを停止する代わりに、コンテナー シェルのコマンド プロンプトに入り、「exit」と入力してプロセスを終了します。

# docker attach fervent_mccarthy
exit

この種のコンテナを使用して Web サーバーや他の種類のサービスを実行することは、サービスがコンテナの実行中にのみアクティブになるため、開発目的またはテストにのみ最適であることに注意してください。コンテナーを終了すると、実行中のすべてのサービスまたは行われた変更が中断されます。

さらに読む:

関連記事: