Dockerコンテナ内でアプリケーションをインストール、実行、削除する方法 - パート2
前回のDockerに関する記事に続き、このチュートリアルでは、Dockerコンテナを新しいイメージに保存し、コンテナを削除し、コンテナ内でNginxウェブサーバーを実行する方法について説明します。
要件
- 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を取得し、変更をコミットします。完了したら、docker attachを使用してコンテナのコンソールに再度入り、exitと入力してコンテナを停止します。
# docker ps
docker attach 3378689f2069
exit
4. 最近のイメージが適切にコミットされているかを更にテストするために(この場合はNginxサービスがインストール済み)、以下のコマンドを実行して、新しいコンテナを生成します。これにより、Nginxのバイナリが正常にインストールされたかどうかが出力されます:
# docker run ubuntu-nginx whereis nginx
5. コンテナを削除するには、docker ps -a コマンドを使用して取得したコンテナ ID または名前に対して rm コマンドを使用します:
# docker ps -a
sudo docker rm 36488523933a
Dockerコンテナ内でNginxを実行する方法
6. この部分では、以前に作成したubuntu-nginxイメージを使用して、Docker内で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
このようなコンテナを使用してウェブサーバーやその他のサービスを実行することは、コンテナが動いている間のみサービスが稼働するため、開発目的やテストのみに適していることを認識してください。コンテナから退出すると、すべての実行中のサービスや行った変更が中断されます。
さらに読む:










