Docker デプロイメント nginx 実装プロセスのグラフィックとテキストによる詳細な説明

Docker デプロイメント nginx 実装プロセスのグラフィックとテキストによる詳細な説明

1. nginxをダウンロードする

[root@localhost my.Shells]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
docker.io/redis 最新 1e70071f4af4 6 週間前 106.7 MB
[root@localhost my.Shells]# docker pull nginx //nginxをダウンロード
デフォルトタグの使用: 最新
リポジトリ docker.io/library/nginx をプルしようとしています... 
最新: docker.io/library/nginx からプル
e7bb522d92ff: プル完了 
6edc05228666: プル完了 
cd866a17e81f: プル完了 
ダイジェスト: sha256:285b49d42c703fdf257d1e2422765c4ba9d3e37768d6ea83d7fe2043dad6e63d
[root@localhost my.Shells]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
docker.io/nginx 最新 3f8a4339a 3 週間前に追加 108.5 MB
docker.io/redis 最新 1e70071f4af4 6 週間前 106.7 MB

2. nginxを実行する

[root@localhost my.Shells]# docker run -p 8080:80 -d docker.io/nginx // ポート 80 を 8080、または 80:80 または元のポート 80 にマップします。省略できません。
c0462d5e18783e20f9515108fa62ab0f2ac808ea85370a7c82aee9407abf4672
[root@localhost my.Shells]# netstat -anp | grep 8080 //ポートtcp6が有効 0 0 :::8080 :::* LISTEN 2529/docker-proxy-c 
[root@localhost my.Shells]# docker ps //nginxはすでに実行されています コンテナID イメージ コマンド 作成済み ステータス ポート 名前
c0462d5e1878 docker.io/nginx "nginx -g 'daemon off" 4 分前 4 分前にアップ 0.0.0.0:8080->80/tcp angry_mccarthy

3. 運用結果

[root@localhost my.Shells]# ./openFirewallPort.sh // ファイアウォールのポートを開くには、まずポートを入力します: 
成功

---openFirewallPort.sh-------

 echo "ポートを入力してください: "
 読み取りポート
 ファイアウォールコマンド --add-port=$port/tcp

#次の画像に正常にアクセスしました

知らせ:

docker が nginx を実行する場合、外部アクセスは docker が配置されている IP アドレスのままとなり、そのマシン上で nginx が実行されていることと同等になります。

しかし、docker が配置されているマシンの場合、nginx は docker にアタッチされたイメージです。 nginx を操作したい場合は、docker 経由で nginx コンテナにログインして操作を行うことができます。

ログインした nginx コンテナは Linux システムですが、デフォルトの Linux パスに従ってインストールされた nginx のみが含まれています。例えば
root@c0462d5e1878:/usr/share/nginx/html# ls このパスはデフォルトの静的ページ保存パスです
50x.html インデックス.html

bash コマンドは同じですが、vi は私のマシンでは使用できません。ただし、nginx は設定されており変更できないため、cp や mv などのコマンドは使用できます。

1) nignx コンテナにログインする前に、必要なファイルを書き込んで、指定されたディレクトリにコピーすることができます。

[root@localhost my.Shells]# docker cp hello.html c0462d5e1878://usr/share/nginx/html
[root@localhost my.Shells]# docker exec -it c0462d5e1878 bash
root@c0462d5e1878:/usr/share/nginx/html# ls
50x.html hello.html インデックス.html

2) ホストディレクトリ経由でコンテナにマッピングする

docker run -p 80:80 -d -v $PWD/html:usr/share/nginx/html docker.io/nginx
-v $PWD/html:usr/share/nginx/html は、現在のパスの html ディレクトリを usr/share/nginx/html にマッピングすることを意味します。

つまり、ホストの下のhtmlはコンテナの下のusr/share/nginx/htmlです。

html内のファイルの変更と追加は、コンテナusr/share/nginx/html内のファイル操作と同等です。

外部ネットワーク経由でアクセスできるため、コンテナにログインしてファイルを操作する必要はありません。

4. サービスを停止する

[root@localhost my.Shells]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
c0462d5e1878 docker.io/nginx "nginx -g 'daemon off" 56 分前 56 分前 0.0.0.0:8080->80/tcp angry_mccarthy
[root@localhost my.Shells]# docker stop c0462d5e1878 
c0462d5e1878
[root@localhost my.Shells]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名

5. サービスを再起動する

[root@localhost my.Shells]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
[root@localhost my.Shells]# docker start c0462d5e1878 
c0462d5e1878
[root@localhost my.Shells]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
c0462d5e1878 docker.io/nginx "nginx -g 'daemon off" 59 分前 12 秒前に起動 0.0.0.0:8080->80/tcp angry_mccarthy

6. 同じサービスを再度開く

[root@localhost my.Shells]# docker run -p 8081:80 -d docker.io/nginx 
//別のサービスを開きます。ポートは 8081 です。
1fd8a0b5d138203150f1cdbfb9690235159159881785a4654abb04c7c96c5b18
[root@localhost my.Shells]# docker ps // 8080 と 8081 に 2 つのプロセスがあります
コンテナID イメージ コマンド 作成ステータス ポート名
1fd8a0b5d138 docker.io/nginx "nginx -g 'daemon off" 4 秒前 3 秒前に起動 0.0.0.0:8081->80/tcp suspect_hypatia
c0462d5e1878 docker.io/nginx "nginx -g 'daemon off" 約 1 時間前 4 分前 0.0.0.0:8080->80/tcp angry_mccarthy 

上の図は、新しく開始された 8081 サービスにアクセスします。注: 新しく開始されたサービスと元のサービスは 2 つのコンテナーです。元の hello.html は新しいサービスにはありません。

7. サービスをアンインストールする

[root@localhost my.Shells]# docker ps //8080と8081は両方とも実行中です コンテナID イメージ コマンド 作成日時 ステータス ポート 名前
1fd8a0b5d138 docker.io/nginx "nginx -g 'daemon off" 4 分前 4 分前に起動 0.0.0.0:8081->80/tcp suspect_hypatia
c0462d5e1878 docker.io/nginx "nginx -g 'daemon off" 約 1 時間前 8 分前 0.0.0.0:8080->80/tcp angry_mccarthy
[root@localhost my.Shells]# docker stop 1fd8a0b5d138 //8081を停止
1fd8a0b5d138
[root@localhost my.Shells]# docker ps // 8080 のみがまだ実行中 コンテナ ID イメージ コマンド 作成 ステータス ポート 名前
c0462d5e1878 docker.io/nginx "nginx -g 'daemon off" 約 1 時間前 9 分前 0.0.0.0:8080->80/tcp angry_mccarthy
[root@localhost my.Shells]# docker ps -a //8080が実行中で、8081が終了していることがわかります
コンテナID イメージ コマンド 作成ステータス ポート名
1fd8a0b5d138 docker.io/nginx "nginx -g 'daemon off" 5 分前 終了 (0) 7 秒前 suspect_hypatia
c0462d5e1878 docker.io/nginx "nginx -g 'daemon off" 約 1 時間前 9 分前 0.0.0.0:8080->80/tcp angry_mccarthy
[root@localhost my.Shells]# 

[root@localhost my.Shells]# docker rm 1fd8a0b5d138 //このプロセスを削除します。実行中のプロセスはrmできないので、まず停止してください。
1fd8a0b5d138

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

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

<<:  MySQL の lru リンク リストの簡単な分析

>>:  Vueにログイン認証傍受機能を設置するアイデアを詳しく解説

推薦する

Photoshop を使って Web ワイヤーフレームを作成する方法

この投稿では、通知、画像とビデオ、フォーム フィールド、タイトル、段落、箇条書きリスト、ナビゲーショ...

WeChatアプレットはウォーターフォールフローのページングスクロール読み込みを実装します

この記事では、WeChatアプレットのウォーターフォールフローページングスクロールロードを実装するた...

MySQL ビューの紹介と基本操作のチュートリアル

序文ビューは、データベース システム内で非常に便利なデータベース オブジェクトです。 MySQL 5...

MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...

Linuxの一般ユーザー向けスケジュールタスクの詳細な説明

序文通常のユーザーはcrontabスケジュールタスクを定義します。たとえば、Oracleユーザーはス...

TypeScript での関数オーバーロード

目次1. 関数シグネチャ2. 関数のオーバーロード2.1 オーバーロードされたシグネチャは呼び出し可...

JavaScript 日付ツールの概要

ユーティリティ = { /** * 死亡年ですか? * @return {Boolse} true...

LINUX ポートが占有されているかどうかを確認します

ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...

アコーディオンセカンダリメニューを実装するためのjQueryプラグイン

この記事では、jQueryプラグインを使用してアコーディオンセカンダリメニューを作成します。具体的な...

CentOS7 に MySQL をオフラインでインストールする詳細なチュートリアル

1. 元のmariadbを削除します。削除しないとmysqlをインストールできません。 mariad...

数百万のデータに対して MySQL クエリを最適化する 4 つの方法

目次1. 時間が経つにつれて限界が遅くなる理由2. 百万データシミュレーション1. 従業員テーブルと...

docker view container log コマンドの実装

なぜログを読む必要があるのでしょうか?たとえば、コンテナの起動に失敗したがプロンプトが表示されない場...

MySQL 実践演習 シンプルなライブラリ管理システム

目次1. ソート機能2. データベースを準備する3. データベースに関連するエンティティクラスの構築...

CSSで特殊なグラフィックを描く方法

1. 三角形境界線の設定 コード: 幅: 300ピクセル; 高さ: 300px; 背景: 赤; 境界...

MySQL マスタースレーブステータスチェックの実装

1. AデータベースとBデータベースの同期ステータスを確認する次のコマンドを入力すると多くの情報が表...