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

推薦する

MySQL の同時実行性の問題と解決策の分析

目次1. 背景2. テーブルロックによるクエリの遅延3. オンラインでテーブル構造を変更するとどのよ...

mysqlはタイムゾーン関連の問題を解決します

序文: MySQL を使用すると、時間の表示が正しくない、タイムゾーンが GMT+8 ゾーンにない、...

HTML tbody の使用

構造化テーブル (IExplore のみ) 1) 行ごとにグループ化<thead> .....

JavaScript でプロパティハイジャックを実装する方法 defineProperty

目次序文記述子getとsetの詳細な説明オブジェクトの属性の乗っ取りオブジェクトのすべてのプロパティ...

type=fileファイル変更フォームの名前が正常にエコーされない問題を解決

easyui フレームワークのコードは次のとおりです。 css: .ファイルボックス{ フロート:...

正の整数かどうかを判断するMYSQLカスタム関数の例コード

関数を記述できます。主に正規表現を使用して判断を行います。入力文字が空の場合は、「-」を使用して置き...

vue.js でよく使われる v 命令の解析

目次Vue でのモデルバインド表示の if の v-text の説明v-html: v-オンv-if...

CSSの絶対と相対について

冒頭にこう書かれています:アブソリュートは言った。「親戚よ、私はあなたを私の人生で見たくない!」なぜ...

MySQL データベース シェル import_table データ インポート

目次MySQL Shell import_table データのインポート1. import_tabl...

Docker+nextcloudで個人用クラウドストレージシステムを構築

1. Dockerのインストールと起動 yum で epel-release をインストールします ...

ボタンをクリックした後のCSS読み込み効果を実現する

自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...

MySQL イベント スケジューラに関するよくある話 (必読)

概要MySQL には独自のイベント スケジューラもあり、これは Linux の crontab ジョ...

Linux でハードディスクのサイズを確認し、ハードディスクをマウントする方法

Linux には、マウントされたハードディスクとマウントされていないハードディスクの 2 種類のハー...

Vueは虫眼鏡付きの検索ボックスを実装します

この記事では、Vueを使用して虫眼鏡付きの検索ボックスを実装する方法を紹介します。具体的な内容は次の...

ReactJs 基礎チュートリアル - 基本編

目次1. ReactJS の紹介2. ReactJSの理解とReactJSの利点1. ReactJS...