Dockerコンテナにnginxを簡単にデプロイするプロセスの分析

Dockerコンテナにnginxを簡単にデプロイするプロセスの分析

1. コンテナにnginxサービスをデプロイする

centos:7 イメージはコンテナを実行し、このコンテナ内に Nginx サービスをデプロイします。

[root@Docker ~]# docker pull centos:7 //イメージをダウンロードする
[root@Docker ~]# docker run -itd --name webapp --restart=always centos:7 //webappという名前のコンテナを実行します
[root@Docker ~]# docker cp nginx-1.16.0.tar.gz webapp:/root //ローカルのnginxパッケージをwebappコンテナにインポートします
[root@Docker ~]# docker exec -it webapp /bin/bash //コンテナに入る
[root@85099880dabe ~]# tar zxf nginx-1.16.0.tar.gz
[root@85099880dabe ~]# cd nginx-1.16.0
[root@85099880dabe nginx-1.16.0]# yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel //関連する依存パッケージをダウンロードします
[root@85099880dabe nginx-1.16.0]# useradd -M -s /sbin/nologin nginx //ロ​​グイン権限のない nginx ユーザーを追加します
[root@85099880dabe nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx //コンパイルしてインストール

[root@85099880dabe nginx-1.16.0]# make && make install //コンパイルしてインストール
[root@85099880dabe nginx-1.16.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ //ソフトリンクを作成する
[root@85099880dabe nginx-1.16.0]# nginx
[root@85099880dabe nginx-1.16.0]# nginx // nginxサービスが有効になっていることを確認します
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
[root@85099880dabe nginx-1.16.0]# cd /usr/local/nginx/html/
[root@85099880dabe html]# echo "TEST WEB" > index.html
[root@85099880dabe html]# カール 127.0.0.1
テストウェブ

2. イメージを移行する

必要な環境:

docker1 ホスト: 192.168.45.129

docker2 ホスト: 192.168.45.134

1) docker1ホスト

新しく作成したdocker1のコンテナをdocker2ホストにインポートします。

[root@Docker ~]# docker commit webapp myweb //webappコンテナをmywebという名前のミラーにする
sha256:b035b8e8a36140e1bdbda9cf3a7​​36b139ea8a48db7871a10f509b8f34d4c0f82
[root@Docker ~]# docker save > myweb.tar myweb:latest //イメージをエクスポートする
[root@Docker ~]# scp myweb.tar 192.168.45.134:/root //エクスポートしたtarballをdocker2ホストにcpします
ホスト「192.168.45.134 (192.168.45.134)」の信頼性を確立できません。
ECDSA キーのフィンガープリントは d7:77:71:90:34:25:c0:ec:e0:b6:5c:cc:6b:44:93:7b です。
本当に接続を続行しますか (はい/いいえ)? はい
警告: '192.168.45.134' (ECDSA) が既知のホストのリストに永続的に追加されました。
[email protected] のパスワード: //パスワードは docker2 ホストのパスワードです
myweb.tar 100% 353MB 176.4MB/秒 00:02

2) Docker2ホスト

[root@Docker2 ~]# docker load < myweb.tar //tar パッケージをミラーに cp するだけです
[root@Docker2 ~]# docker run -itd --name newweb myweb:latest //コンテナを起動する
[root@Docker2 ~]# docker exec -it newweb /bin/bash //コンテナに入る
[ルート@4e419b580248 /]#
[root@4e419b580248 /]# nginx // nginxサービスが開始されたことを確認します
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] 0.0.0.0:80 への bind() が失敗しました (98: アドレスは既に使用されています)
nginx: [emerg] まだbind()できませんでした
[root@4e419b580248 /]# カール 127.0.0.1
テストウェブ

注: ここでは、docker1 ホスト コンテナーに構築されたシンプルな nginx 環境がミラーとして docker2 ホストに正常に移行されたことがわかります。

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

以下もご興味があるかもしれません:
  • Docker Nginxコンテナの制作と展開の実装方法
  • Dockerコンテナにnginxを簡単にデプロイするプロセスの分析
  • Docker コンテナのデプロイの試み - マルチコンテナ通信 (node+mongoDB+nginx)
  • Docker デプロイメント nginx 実装プロセスのグラフィックとテキストによる詳細な説明
  • Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法
  • Django+Mysql+Redis+Gunicorn+NginxのDockerデプロイメントの実装
  • Dockerでnginxをデプロイし、設定ファイルを変更する方法

<<:  Reactは二次連結(左右連結)を実現する

>>:  MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。

推薦する

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

JavaScriptはXiaomi Mall公式サイトの完全なページ実装プロセスを模倣します

目次1. ホームページ制作1. ダウンロードアプリの制作2. ナビゲーションバーの制作3. カルーセ...

ページの下部にHTMLフッターを配置する簡単な方法

要件:ページ コンテンツが短く、ブラウザーの高さをサポートできない場合でも、フッターをウィンドウの下...

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

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

HTML タグ マーキーはさまざまなスクロール効果を実現します (JS 制御なし)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

jQueryは検証コード送信のコントロールボタンを無効にする機能を実装します

必要な効果: 確認コードを送信するためにクリックした後、ボタンは無効になり、5 秒後に無効解除されま...

JavaScript を使用してページ要素のオフセットを取得/計算する方法

質問コントロールをクリックすると、コントロールの下にフローティング レイヤーが表示されます。通常の方...

Nginx try_files ディレクティブの使用例

Nginx の設定構文は柔軟で、高度に制御可能です。バージョン 0.7 以降では、try_files...

Linuxファイルシステム操作の実装

この読書ノートでは、主にファイルシステムに関連する操作を記録します。ディスクとディレクトリの容量ディ...

MySQLの7種類のログの概要

MySQL には次のログ ファイルがあります。 1: 再実行ログ2: ロールバックログ(元に戻すログ...

DockerのTLS(SSL)証明書の有効期限の問題を解決する

問題現象: [root@localhost ~]# docker イメージをプル xxx.com.c...

CocosCreator Typescriptでテトリスゲームを作る

目次1. はじめに2. 解決すべきいくつかの重要な問題3.最後に書く1. はじめに最近、Cocos ...

HTML ウェブページハイパーリンクタグ

HTML ウェブ ページのハイパーリンク タグの学習チュートリアル リンク タグの属性 リンクは、ウ...

インターフェーステストプラットフォームを構築するためのDjango+Vue+Dockerの詳細な説明

1. 冒頭の2つの単語みなさんこんにちは。私の名前はLin Zonglinです。私はテストエンジニア...

CocosCreatorでスワイプした位置にテクスチャを表示する方法

目次1. プロジェクト要件2. 文書の内容3. プロジェクト例4. プロジェクトコード1. プロジェ...