Nginx の Docker インストールの問題とエラー分析

Nginx の Docker インストールの問題とエラー分析

質問:


DockerNginxをインストールするときに次のエラーが発生しました:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused “process_linux.go:424: container init caused “rootfs_linux.go:58: mounting \”/docker/nginx/conf\” to rootfs \"/var/lib/docker/overlay2/126c244dc6ee7095b1501a503eb361bade4fc255601ec0b0fe96238b58178958/merged\" at \"/var/lib/docker/overlay2/126c244dc6ee7095b1501a503eb361bade4fc255601ec0b0fe96238b58178958/merged/etc/nginx/nginx.conf\" caused \“not a directory\”"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

画像をインストールして直接

docker run \ -p 80:80 \ --name nginx \ -d --restart=always \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /mydata/nginx/logs:/var/log/nginx \ nginx

それから何かがおかしくなりました。

エラー分析:


私が理解できるエラーの部分は、次のように言っています: ディレクトリをフォルダーにマウントしようとして、 /nginx/nginx.conf\" caused \“not a directory\”" 、ダダダ... というような内容です。ここで、ホスト上のファイル パスを確認したところ、ローカルに作成されたnginx.confは、必要なファイルnginx.confではなく、フォルダーnginx.conf/であることがわかりました。

正しい操作方法:


ファイルを作成する

mkdir -p /mydata/nginx/conf
/mydata/nginx/conf/nginx.conf をタッチします。

vim /mydata/nginx/conf/nginx.conf

nginx.confに公式の初期コンテンツを記述する

#ユーザーnobody;
ワーカープロセス 1;

#error_log ログ/error.log;
#error_log ログ/error.log 通知;
#error_log ログ/error.log 情報;

#pid ログ/nginx.pid;

イベント {
    ワーカー接続 1024;
}

http {
    mime.types を含めます。
    デフォルトタイプ アプリケーション/オクテットストリーム;

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    # '$status $body_bytes_sent "$http_referer" '
    # '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log ログ/access.log メイン;

    ファイル送信オン;
    #tcp_nopush オン;

    #キープアライブタイムアウト 0;
    キープアライブタイムアウト65;

    #gzip オン;

    サーバー{
        聞く 80;
        server_name ローカルホスト;

        #文字セット koi8-r;

        #access_log ログ/host.access.log メイン;

        位置 / {
            ルート /usr/share/nginx/html;
            インデックス index.html index.htm;
        }

        #エラーページ 404 /404.html;

        # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
        #
        エラーページ 500 502 503 504 /50x.html;
        場所 = /50x.html {
            ルートhtml;
        }
    }
}

そして実行

docker 実行 \
	-p 80:80 \
	--name nginx \
 	-d --restart=常に\
 	-v /mydata/nginx/html:/usr/share/nginx/html \
 	-v /mydata/nginx/conf.d:/etc/nginx/conf.d \
 	-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
 	-v /mydata/nginx/logs:/var/log/nginx \
 	nginx 

テスト:

ローカルの/mydata/nginx/html/index.html配置します。

再起動: docker restart nginx

http://localhost/ にアクセスします。

画像-20211216132625114

参考ブログ:

​ https://www.cnblogs.com/ivictor/p/4834864.html (ディレクトリマウントの概要)

https://blog.csdn.net/qierkang/article/details/92657302

​ https://my.oschina.net/u/3375733/blog/1591091 (/conf.d/*.conf を追加する必要がある場合は、このブログをお読みください)

​ https://blog.csdn.net/weixin_44757670/article/details/104993869 (/conf.d/*.conf を追加する必要がある場合は、このブログをお読みください)

以上で、Docker で Nginx をインストールする方法(エラー解析を含む)についての記事は終了です。Docker で Nginx をインストールする方法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • PHP の Docker インストールと Nginx を使用したデプロイメントの例
  • Docker インストール Nginx チュートリアル 実装図
  • DockerにNginxをインストールする方法
  • Docker nginxのインストールと設定方法

<<:  MySQL における INSERT INTO SET の利点

>>:  Web 開発の面接と筆記試験に必須の知識(必読)

推薦する

WeChatミニプログラムページとコンポーネント間の情報伝達と機能呼び出し

今回は、私自身の開発経験を踏まえて、以下の観点で関連内容を解説します。ページからコンポーネントにデー...

Jenkins の紹介と Docker で Jenkins をデプロイする方法

1. 関連概念1.1 Jenkins の概念: Jenkins は、使用されるプラットフォームに関係...

Linuxの運用・保守の基礎知識から上級者向け知識までをまとめました

運用保守エンジニアは、初期段階では非常に大変な仕事です。この期間中、コンピューターの修理、ネットワー...

vue3 で vue-router を使用するための完全な手順

序文ルーティングの管理は、ほとんどのシングルページ アプリケーションにとって不可欠な機能です。 Vu...

Linux のよく使うコマンドの使い方を詳しく解説(第 2 回)———— テキストエディタのコマンド vi/vim

vi/vim の紹介どちらもマルチモード エディターです。違いは、vim が vi のアップグレー...

MySQLセグメンテーション関数substring()の具体的な使用法

MySQL には、主に left()、right()、substring()、substring_i...

Nginx ロードバランシング/SSL 構成の実装

負荷分散とは何ですか?ドメイン名が複数の Web サーバーを指している場合は、nginx ロード バ...

Docker ベースの ELK を素早く構築する方法

[概要] この記事では、自作の Docker プラットフォームをベースに完全な ELK システムを素...

CSS3は、変換変形とイベントを組み合わせて扇形のナビゲーションを完成させます。

この場合、transition という単語を間違って書いたため、午後中ずっとそれに取り組みました。本...

WMLタグの概要

構造関連タグ--------------------------------------------...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

MySQL テーブルスペースのリカバリに対する正しいアプローチについての簡単な説明

目次予備的注釈問題の再現データ削除の原則データの再利用どの操作がデータホールの原因になりますか?表領...

Dockerはコンテナにポートを動的に公開します

コンテナのIPアドレスを表示するdocker examine <コンテナ名またはID> ...

MySQL でタイムゾーンを表示および変更する方法

今日、プログラムが間違った時刻を挿入し、フィールドがデフォルト値 CURRENT_TIMESTAMP...