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