一般に、テクノロジーを学ぶために、最初に最も簡単な例または最も一般的な例を使用して紹介コンテンツを説明します。そのため、この記事では、dockerを使用してnginxコンテナーサービスをインストールする方法を紹介します。 この記事では、基本的な使用法の観点から、Dockerのほぼコアコンテンツであるイメージプル、コンテナ操作、ポートマッピング、ファイルマッピングについて説明します 。基本的ですが、非常に重要であるため、初心者は注意深く読む必要があります。
まず、ミラーを引っ張る
docker pullコマンドは、アプリケーションイメージをプルするためにdocker pull nginx
使用され、コマンドは、nginxイメージの最新バージョンをプルするために使用されます。プルミラープロセスの応答結果は次のとおりです。
# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
c229119241af: Pull complete
2215908dc0a2: Pull complete
08c3cb2073f1: Pull complete
18f38162c0ce: Pull complete
10e2168f148a: Pull complete
c4ffe9532b5f: Pull complete
Digest: sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
docker.io
上記から、nginxイメージがこのURLから取得されていることがわかります。
コマンドを使用docker images
して、現在のオペレーティングシステムにダウンロードされているイメージファイルを確認します。
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 12766a6745ee 33 hours ago 142MB
hello-world latest feb5d9fea6a5 6 months ago 13.3kB
- REPOSITORYミラーウェアハウスとミラー名。ミラーウェアハウスが表示されていない場合、デフォルトは
docker.io
- TAGミラーバージョンまたはマイルストーンタグ、latestは最新バージョンを表します
- IMAGEID画像の一意のID
- この画像が作成されたときに作成されました
- SIZEは、画像ファイルのサイズを示します
2.イメージを実行してコンテナを起動します
コマンドを使用してコンテナーを開始しdocker run
ます。コンテナー名はnginx-zimugです。
# docker run -d --name nginx-zimug -p 80:80 nginx
81bb1211144bc0991a789f860458548643c60b5459466c14d0604be9a4ccbfd7
-d
コンテナがバックグラウンドで実行されていることを示します--name
コンテナに名前を付けます-p
ポートマッピング、形式はです宿主机端口:容器端口
。上記の意味は、コンテナ内のポート80をホストのポート80にマッピングし、外部アクセスサービスを提供することです。- 最後のフィールドは画像名です
ブラウザのHTTPプロトコルはホストのポート80にアクセスします。ポート80の場合は、省略できます。得られたアクセス結果は以下のとおりであり、nginxサービスが正常に開始されたことを示しています。
docker ps
実行中のコンテナは次のように表示できます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81bb1211144b nginx "/docker-entrypoint.…" 11 minutes ago Up 11 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx-zimug
3.ファイルマッピング
まず、コンテナ内のファイルの内容を変更できることは明らかですが、コンテナを再起動すると、コンテナに書き込まれたデータファイルと構成ファイルへのすべての変更が失われます。したがって、コンテナーの実行状態と実行結果を保存するには、コンテナー内のいくつかの重要なデータファイル、ログファイル、および構成ファイルをホストにマップする必要があります。
nginxを例にとると、nginxには3つの重要なファイルディレクトリがあります。
コンテナ内のパス | ホストのカスタムマッピングパス | |
---|---|---|
Webサイトページが保存されているディレクトリ | / usr / share / nginx / html | / root / nginx / html |
nginx構成ファイルディレクトリ | /etc/nginx/nginx.conf | /root/nginx/conf/nginx.conf |
ログディレクトリ | / var / log / nginx | / root / nginx / logs |
ホスト上に新しいファイルディレクトリを作成します
mkdir -p /root/nginx/logs /root/nginx/html /root/nginx/conf;
コンテナー内のファイルをホストに
コピーしますnginx構成ファイルをホストにコピーします
docker cp nginx-zimug:/etc/nginx/nginx.conf /root/nginx/conf;
シミュレートされたhtmlファイルをhtmlディレクトリに
配置します。次のファイルをindex.htmlとして保存し、ホストマシンのディレクトリに配置します/root/nginx/html
。マッピング関係があるため、実際に/usr/share/nginx/html
はコンテナのディレクトリにも配置されます。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用docker搭建nginx web服务</title>
</head>
<body>
<h1>访问成功</h1>
<p>厉害了!</p>
</body>
</html>
第四に、コンテナサービスを再開します
-v
このパラメーターは、ホストファイルとコンテナー内のファイル間のマッピング関係を表します。形式は-v 宿主机目录:容器文件系统目录
次のとおりです。nginx-prodという名前の新しいコンテナを開始します
docker run -d -p 80:80 \
--name nginx-prod \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx nginx
新しいコンテナを起動する前に、nginx-zimugの古いコンテナを削除してください。古いコンテナが削除されていない場合、新しいコンテナのポートは古いコンテナのポートと競合します。次のコマンドでコンテナを削除します。
docker stop nginx-zimug;
docker rm nginx-zimug;
上記のdocker run
コマンドを実行して、新しいコンテナを起動します。起動後、ブラウザからホストのポート80にアクセスすると、nginxがWebサービスを正常に提供していることを証明するための応答結果は次のようになります。
同時に、ホストのnginx構成を変更したり、ランタイムログファイルを表示したりすることもできます。ホストの構成ファイルとコンテナー内の構成ファイルの間にはマッピング関係があるため、変更結果はコンテナーnginxサービスの操作に影響します。