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

推薦する

dockerでsshd操作を有効にする

まず、docker に openssh-server をインストールします。インストールが完了したら...

Linuxルートの初期値を設定する方法の簡単な分析

Ubuntu ではデフォルトで root ログインが許可されていないため、初期の root アカウン...

MySQL で 1 つのテーブルのフィールドを使用して別のテーブルのフィールドを更新する方法

1. 1列を変更する 学生の更新、都市c s.city_name = c.name を設定します こ...

MySql8.0バージョンに接続するMyBatisの設定問題について

mybatis を学習しているときにエラーが発生しました。エラーの内容は次のとおりです。データベース...

Linux での MySQL 5.6.33 のインストールと設定のチュートリアル

このチュートリアルでは、LinuxでのMySQL 5.6.33のインストールと設定方法を参考までに紹...

Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

1. libfastcommon-1.0.43 をインストールします。インストール パッケージは h...

インデックスを使用して数千万のデータを持つ MySQL のクエリ速度を最適化する

1. インデックスの役割一般的に言えば、インデックスは本の目次に相当します。条件に基づいてクエリを実...

タイプライター効果を実現する純粋な js

この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...

MySQL シリーズ: MySQL リレーショナル データベースの基本概念

目次1. 基本概念2. データベース管理技術の開発3. リレーショナルデータベース(RDBMS)の概...

CSS3.0 でネオンボタンアニメーション効果を実装するためのサンプルコード

今日は、CSS 3.0 で実装されたネオン ボタン アニメーション効果を紹介します。効果は次のとおり...

Vue+WebSocket ページでの長時間接続のリアルタイム更新

最近、Vue プロジェクトではデータをリアルタイムで更新する必要があります。折れ線グラフは 1 秒ご...

HTML の類似タグと属性の違いの詳細な説明

【1】<i></i>タグと<em></em>タグ同じ...

ReactプロジェクトでのTypeScriptの実装

目次1. はじめに2. 使用方法ステートレスコンポーネントステートフルコンポーネント制御コンポーネン...

zabbix 4.04 の詳細なインストール チュートリアル (CentOS 7.6 ベース)

1. インストール前の準備: 1.1 JDKをインストールするopenjdkをアンインストールする...

Linux での VMWare15.5 のインストールに関するチュートリアル

Linux に VMWare をインストールするには、公式 Web サイト https://www....