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

推薦する

Tomcat を設定して IntelliJ IDEA 2018 で最初の Java Web プロジェクトを実行する方法

1 Tomcatをダウンロードして起動する公式サイト http://tomcat.apache.or...

MySQLを5.7にアップグレードすると、WordPressはデータをインポートするときにエラー1067を報告します

最近MySQLを5.7にアップグレードしましたが、WordPressでデータのインポート時にエラーが...

Webフロントエンドのパフォーマンス最適化

ウェブフロントエンド最適化のベストプラクティス: コンテンツWebフロントエンド最適化のベストプラク...

docker を使用して Spring Boot をデプロイし、Skywalking に接続する方法

目次1. 概要1. スカイウォーキング入門2. スカイウォーキング建築3. スカイウォーキングはどの...

CSS フロートプロパティ図 フロートプロパティの詳細

CSS の float プロパティを正しく使用することは、カバーすべき内容が多く、ブラウザの互換性の...

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できな...

DockerはRedisを起動し、パスワードを設定します

RedisはRedisバージョン5のapline(Alps)イメージを使用します。これは小さくて高速...

中国語フォントの英語名まとめ

CSS の font-family プロパティを使用して中国語フォントを参照する場合、フォントを定義...

MySQL 一時テーブルの簡単な使用法

MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現...

MySQL 百万レベルのデータページングクエリ最適化ソリューション

データベースからクエリする必要があるテーブルに数万件のレコードがある場合、すべての結果を一度にクエリ...

Vueプラグインの詳しい説明

要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS....

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

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

MySQL データベース 8 - データベース内の関数の適用の詳細な説明

データベースの組み込み関数の使用この記事では、主に日付関数、文字列関数、数学関数など、データベースの...

JavaScript ツールチェーンの不完全なガイド

目次概要静的型チェックコードスタイルチェック(Linter)パッケージマネージャーモジュールローダー...