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

推薦する

Canonical が Flutter で Linux デスクトップ アプリを有効化 (推奨)

Google の Flutter の目標は、どのプラットフォームを使用していても、ネイティブの速度...

フロントエンドに必要なNginx設定の詳細な説明

Nginx (エンジン x) は、軽量で高性能な HTTP およびリバース プロキシ サーバーであり...

Docker 実行時にユーザーとグループを管理する方法

Docker はプロセスを中核としてシステムリソースを分離する管理ツールです。分離は、オペレーティン...

MySQL 5.7.17 圧縮バージョンのインストールノート

この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...

同期スクロールを実現するための複数のテーブル要素のサンプルコード

Element UIは、複数のテーブルを同時に水平および垂直にスクロールすることを実装します。 コー...

Spring環境を構成するためのDocker-composeの手順

最近、メンバーがテストできるようにプロジェクトをパッケージ化する必要がありますが、パッケージ化された...

CSS3 で複数のカスタムフォントを導入する

今日、HTML に問題を発見しました。多くのデフォルト フォントが提供されていますが、「Bold」、...

mysql 5.7.18 winx64 パスワード変更

MySQL 5.7.18 が正常にインストールされた後、バージョン 5.7 では空のパスワードでのロ...

MySQLの文字セット設定を5分で理解しましょう

目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...

ボタンをクリックして画像を切り替える JavaScript

この記事の例では、ボタンをクリックすることで画像を切り替えることを実現するJavaScriptの具体...

JavaScript でよく使われる 5 つのオブジェクト

目次1. JavaScript オブジェクト1).配列オブジェクト2).ブールオブジェクト3).日付...

Linux 上の MariaDB は root ユーザーで起動します (推奨)

最近、セキュリティ製品をテストする必要があったため、mariadb の起動ユーザーを root に調...

DockerにElasticsearch7.6クラスタをインストールしてパスワードを設定する方法

目次基本的な設定バージョンとDockerイメージについて始めるelasticsearch.ymlにつ...

Docker mongoDB 4.2.1 をインストールし、Springboot ログを収集する詳細な手順

1: dockerにmongodbをインストールするステップ1: dockerにmongodbをイン...

MySQL での %% のようなファジークエリの実装

1、%: 0 個以上の任意の文字を表します。あらゆるタイプと長さの文字に一致します。場合によっては、...