Docker Nginxコンテナの制作と展開の実装方法

Docker Nginxコンテナの制作と展開の実装方法

クイックスタート

1. Docker Hubでnginxイメージを見つける

docker 検索 nginx

2. 公式のNginxイメージを取得する

docker プル nginx

3. ローカルミラーリストでリポジトリがnginxであるミラーを探す

docker イメージ nginx

リポジトリ タグ イメージ ID 作成 サイズ
nginx 最新 4bb46517cac3 4 週間前 133MB

4. 次のコマンドは、NGINX コンテナ内のデフォルト設定を使用して Nginx コンテナ インスタンスを起動します。

次のようにコードをコピーします
docker run --rm --name nginx-test -p 8080:80 -d nginx

このコマンドの 4 つのコマンドライン パラメータの意味は次のとおりです。

  • --rm: コンテナ終了後にコンテナ ファイルを自動的に削除します。
  • --name nginx-test: コンテナの名前は nginx-test で、名前は自分で定義します。
  • -p: ポートをマップして、ローカルポート 8080 をコンテナ内のポート 80 にマップします。
  • -d: コンテナの起動後、バックグラウンドで実行します
  • -d パラメータの後の nginx は、起動するコンテナ イメージの名前です。

5. 起動したDockerコンテナを表示する

docker コンテナ ps

コンテナID イメージ コマンド 作成ステータス ポート名
acb0e263dff3 nginx "/docker-entrypoint.…" 10 秒前 9 秒前に起動 0.0.0.0:8080->80/tcp nginx-test

6. ブラウザでアクセスします。私は Tencent Cloud Host を使用しています。パブリック IP + ポートにアクセスするだけです。

ブラウザで http://public network ip:8080 を開くと、効果は次のようになります。

導入サービス

1. Nginx 関連のファイル情報を保存するローカル ディレクトリを作成します。

mkdir -p /home/nginx/www /home/nginx/logs /home/nginx/conf

で:

  • www: ディレクトリは、nginx コンテナで設定された仮想ディレクトリにマップされます。
  • logs: ディレクトリは nginx コンテナのログ ディレクトリにマップされます。
  • conf: ディレクトリ内の設定ファイルは、nginx コンテナの設定ファイルにマッピングされます。

2. コンテナ内のデフォルトの Nginx 設定ファイルを、ローカルの現在のディレクトリの下の conf ディレクトリにコピーします。コンテナ ID は、docker ps コマンド入力の最初の列に表示されます。

ドッカーps

コンテナID イメージ コマンド 作成ステータス ポート名
acb0e263dff3 nginx "/docker-entrypoint.…" 10 秒前 9 秒前に起動 0.0.0.0:8080->80/tcp nginx-test

docker cp acb0e263dff3:/etc/nginx /home/nginx/conf

3. このコンテナを停止する

docker コンテナ停止 nginx-test

コンテナに入るためのコマンドをメモします: docker exec -it nginx-test /bin/bash

4. デプロイメントコマンド

docker run --rm -d -p 8080:80 --name nginx-test-web \
-v /home/nginx/www:/usr/share/nginx/html \
-v /home/nginx/conf/nginx:/etc/nginx \
-v /home/nginx/logs:/var/log/nginx \
nginx

コマンドの説明:

  • --rm: コンテナ終了後にコンテナ ファイルを自動的に削除します。
  • -p 8080:80: コンテナのポート 80 をホストのポート 8080 にマップします。
  • --name nginx-test-web: コンテナの名前をnginx-test-webにする
  • -v /home/nginx/www:/usr/share/nginx/html: 作成した www ディレクトリをコンテナの /usr/share/nginx/html にマウントします。
  • -v /home/nginx/conf/nginx:/etc/nginx: 自分で作成した conf の下の nginx ディレクトリをコンテナの /etc/nginx にマウントします。
  • -v /home/nginx/logs:/var/log/nginx: 自分で作成したログをコンテナの /var/log/nginx にマウントします。

5. 上記のコマンドを実行した後、/home/nginx/www ディレクトリに移動します。

cd /home/nginx/www/
vi インデックス.html

<!DOCTYPE html>
<html>
<ヘッド>
<メタ文字セット="utf-8">
<title>Nginx テスト!!!</title>
</head>
<本文>
<h1>私の最初のタイトル</h1>
<p>私の最初の段落。 </p>
</本文>
</html>

6. ブラウザでアクセス

ブラウザに http://public network ip:8080/ と入力すると、出力は次のようになります。アクセス中に 403 エラーが表示される場合は、index.html ファイルの権限が不十分な可能性があります。644 に設定してください。

HTTPS、HTTP2をサポート

1. /home/nginx/conf/nginxディレクトリにサブディレクトリcertsを作成します。

mkidr 証明書

2. 証明書を生成する

openssl 要求 \
-x509 \
-ノード\
-日数 365 \
-新しいキーrsa:2048\
-keyout example.key \
-out の例.crt

上記コマンドのパラメータの意味は次のとおりです。

  • req: 証明書署名要求を処理します。
  • -x509: 自己署名証明書を生成します。
  • -nodes: 証明書のパスワードを設定する段階をスキップして、Nginx が証明書を直接開くことができるようにします。
  • -日数 365: 証明書の有効期間は 1 年間です。
  • -newkey rsa:2048: 2048 ビット RSA アルゴリズムを使用して新しい秘密キーを生成します。
  • -keyout: 新しく生成された秘密鍵ファイルは、現在のディレクトリの example.key です。
  • -out: 新しく生成された証明書ファイルは、現在のディレクトリの example.crt です。

ディレクトリが正常に作成されると、example.key と example.crt という 2 つのファイルがさらに作成されます。

3.HTTPS設定

/home/nginx/conf/nginx/conf.d ディレクトリに https.conf ファイルを作成し、次のように記述します。

サーバー{
  443 ssl http2 をリッスンします。
  server_name ローカルホスト;

  sslオン;
  ssl_certificate /etc/nginx/certs/example.crt;
  ssl_certificate_key /etc/nginx/certs/example.key;

  ssl_session_timeout 5分;

  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_プロトコル SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers をオン;

  位置 / {
    ルート /usr/share/nginx/html;
    インデックス index.html index.htm;
  }
}

4. 導入サービス

docker run --rm -d -p 8080:80 -p 8081:443 --name nginx-test-web \
-v /home/nginx/www:/usr/share/nginx/html \
-v /home/nginx/conf/nginx:/etc/nginx \
-v /home/nginx/logs:/var/log/nginx \
nginx

5. クイックテスト

http://パブリックネットワークIP:8080/: httpにアクセス
https://パブリックネットワークIP:8081/: httpsにアクセス

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • DockerでNginx+PHP+MySQL環境を構築し、WordPressをデプロイする
  • Dockerでnginxをデプロイし、設定ファイルを変更する方法
  • 初心者のための Docker と NGINX の導入手順の詳細
  • 複数のプロジェクトをデプロイする Docker nginx の例
  • Docker デプロイメント nginx 実装プロセスのグラフィックとテキストによる詳細な説明
  • DockerはNginxをデプロイし、リバースプロキシを構成する
  • Docker+Nginx を使ってシングルページアプリケーションをデプロイする
  • Docker に Nginx をデプロイする方法

<<:  SQL で行の最大値または最小値を取得する方法

>>:  HTML テーブルタグチュートリアル (12): 境界線スタイル属性 FRAME

推薦する

CSS3で背景画像にカラーマスクを追加する方法

以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...

デザインのヒント: きっと気に入っていただけると思います

<br />このタイトルを見ると、見覚えがあるかもしれません。多くのウェブサイトが同様の...

Vue3+スクリプト設定+ts+Vite+Volarプロジェクト

目次Viteを使用してvue + tsプロジェクトを作成するVue 3の3つの構文オプションAPIコ...

Nginx プロキシ axios リクエストと注意事項

序文最近、小さなデモを作成しました。大規模な工場のオンライン データを使用したため、インターフェイス...

Docker ベースの ELK を素早く構築する方法

[概要] この記事では、自作の Docker プラットフォームをベースに完全な ELK システムを素...

Linux viコマンドの知識ポイントと使い方のまとめ

Linux viコマンドの詳しい説明vi エディタは、すべての Unix および Linux システ...

CSSを使用して画像フレームアニメーションと曲線の動きを実装する

すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...

MySQL 5.1 のパスワードを変更し、MySQL データベースにリモートでログインする方法

mysql ユーザーを作成し、承認します。形式: 「ユーザー パスワード」で識別されるユーザー@ログ...

mysql5.7.20 での最初のログイン失敗に対する簡単な解決策

まず、 (1)MySQL 5.7にはデフォルトのパスワードがあるデフォルトのパスワードを見つける g...

Navicat がリモートで SQL Server に接続し、MySQL に変換する詳細な手順

序文最近、プロジェクトで SQL Server を使用するプログラムに遭遇しました。このデータベース...

3分でUbuntu 16.04を初期化し、Java、Maven、Docker環境をデプロイする

Fast-Linux プロジェクト アドレス: https://gitee.com/uitc/Fas...

分散監視システムZabbixはSNMPとJMXチャネルを使用してデータを収集します

前回の記事では、Zabbix のパッシブ、アクティブ、Web 監視に関するトピックについて学習しまし...

MySQLデータベースとテーブルシャーディングの概要

プロジェクトの開発中に、データベースのデータがどんどん大きくなり、その結果、1 つのテーブルにデータ...

docker compose の使い方の詳しい説明

目次Docker Compose の使用シナリオ基本的なデモ基本的な操作とメンテナンスdocker-...

jsシミュレーションでJingdongの詳細ページで画像を拡大する効果を実現

この記事では、Jingdongの詳細ページの画像の拡大を実現するためのjsの具体的なコードを紹介しま...