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 開発の面接と筆記試験に必須の知識(必読)

推薦する

非常に詳細な MySQL8.0.22 のインストールと設定のチュートリアル

みなさんこんにちは。今日は、MySQL 8.0.22 のインストールと構成について学習します。注意深...

MySQLの重複排除操作を極限まで最適化する方法

目次1. インデックスと変数の賢い使用1. インデックスなしの比較テスト2. created_tim...

2021年の花火効果をJSで描画(ソースコードダウンロード付き)

この作品はフロントエンド開発(JSコンテンツ)の知識を使用していますが、フロント部分の後半部分の知識...

JavaScript を使用してハイパーリンクのリダイレクトを防ぐ方法 (複数の書き方)

JavaScript を使用すると、ハイパーリンクがジャンプするのを防ぐことができます。方法は次の...

MySQL における「:=」と「=」の違いの簡単な分析

=設定および更新の場合にのみ、:= と同じ効果、つまり代入効果があり、それ以外の場合は等号の効果があ...

Centos7 で crontab + シェル スクリプトによる定期的な自動ファイル削除の問題を解決する

問題の説明:最近、rsyncで毎回同期するデータ量が多いが、データベースのbakファイルを保持する必...

React はモバイル端末を構築するために antd-mobile+postcss を導入しました

antd-mobileをインストールするグローバル輸入 npm をインストール antd-mobil...

エレガントなJSコードの書き方

目次変数意味があり発音しやすい変数名を使用する同じ型の変数には同じ語彙を使用する検索可能な名前を使用...

CSS アニメーション プロパティの使用方法とサンプル コード (transition/transform/animation)

開発中、優れたユーザー インターフェイスには常にいくつかのアニメーションが組み込まれます。 CSS ...

Dockerコンテナデータボリュームの原理と使用法の分析

コンテナデータボリュームとはデータがコンテナ内にある場合、コンテナを削除するとデータは失われます。例...

MySQL 主キー ID を生成する方法 (自己増分、一意、不規則)

目次1. uuid関数を使用して、一意かつ不規則な主キーIDを生成します。 2. idの自動成長1....

HTMLでは、全体的なスタイルとレイアウトを崩さずに、部分的に強制スクロールバーを使用できます。

まずはエフェクト画像を投稿します:全体的なスタイルとレイアウトが崩れないように、スクロール バーがロ...

MySQL データベース操作 (作成、選択、削除)

MySQL データベースの作成MySQL サービスにログインしたら、create コマンドを使用し...

CSS の歪んだ影の実装コード

この記事では、CSS ワープ シャドウの実装コードを紹介し、皆さんと共有します。詳細は以下の通りです...

Alibaba Cloud Server への Web プロジェクトのデプロイについて (5 つの手順)

1.まずAlibaba Cloudのウェブサイトにログインしてアカウントを登録し、サーバータイプを...