1. ホーム
  2. サーバー

About: docker container start nginx "Error response from daemon: OCI ランタイムの作成に失敗しました

2022-03-03 22:35:09
<パス

デーモンからのエラー応答。OCIランタイムの作成に失敗しました

Docker deploying nginx start mount directory エラーについて

docker: デーモンからのエラー応答。OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:424: container init caused "rootfs_linux.go:424.linux.go:424: container init caused "rootfs_linux.Go:424.Linux.go:424: コンテナプロセス開始が原因で "rootfs_linux が失敗しました。 go:58: mounting \"/docker/nginx/conf\" to rootfs \& quot;/var/lib/docker/overlay2/126c244dc6ee7095b1501a503eb361bade4fc255601ec0b0fe96238b58178958/merged\" at \"/var/lib/ docker/overlay2/126c244dc6ee7095b1501a503eb361bade4fc255601ec0b0fe96238b58178958/merged/etc/nginx/nginx. conf" caused \ "not a directory" "": unknown: unknown: ディレクトリをファイルにマウントしようとしていませんか(またはその逆)?指定されたホストパスが存在し、期待されるタイプであるかどうか確認してください。

を試すことで解決しました。

インストールプロセスのこの側面は説明されていません。 https://www.runoob.com/docker/docker-install-nginx.html チュートリアル
適当に3つのルートディレクトリを作成します。/docker/nginx>conf www html


トピックへ移動します。
dockerを直接起動するには。

    docker run -d -p 8081:80 --name nginx --net host -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx. conf -v /docker/nginx/logs:/var/log/nginx nginx


コマンドの説明です。
-p 8081:80: コンテナのポート 80 をホストのポート 8081 にマップします。
-名前 nginx: コンテナの名前を nginx にします。
-net host :スタートアップモードを推奨します、さもないとロードバランシングに問題が生じます!
-v /docker/nginx/www:/usr/share/nginx/html: 独自に作成したwwwディレクトリを、コンテナの/usr/share/nginx/htmlにマウントします。
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf: 作成したnginx.confをコンテナの/etc/nginx/nginx.confにマウントします。
-v /docker/nginx/logs:/var/log/nginx: 独自に作成したログをコンテナの/var/log/nginxにマウントする。

大きな頭でエラーを報告。 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/nginx.conf\\\\\" to rootfs \\\\\"/var/lib/ docker/overlay2/73ad6cfead8c2d9c1d25469cccff7d86029ce6308a83416b2ef08464c8c5f76f/merged\\\\\" at \\\\\"/var/lib/docker/ overlay2/73ad6cfead8c2d9c1d25469cccff7d86029ce6308a83416b2ef08464c8c5f76f/merged/etc/nginx/nginx.conf\\\\" caused \\\\\"not a directory\\\\"\\quot;": 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.

回避策
起動しない別の方法 -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf これです。
起動する前に、先ほど起動したコンテナを削除する docker rm -f nginx と /docker/nginx/conf/nginx.conf を忘れずに削除する(ここでディレクトリが作成されているので、これも削除する必要があることに注意し、あとは関係なく以下のコマンドを実行する)。

    docker run -d -p 8081:80 --name nginx --net host -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/logs:/var/log/nginx nginx


すると、はい、正常に起動したことがわかりました
そして、nginxコンテナに入って、設定ファイルを/docker/nginx/conf/にコピーして、再度起動すると、以下のように正常に動作しています。

Step 1: docker run -d -p 80:80 --name nginx --net host -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/logs:/var/log/nginx nginx
Step 2: docker exec -it nginx /bin/bash (enter the container and get the file)
Step 3: cd /etc/nginx/ (here mainly to get the path of the configuration file)
Step 4: exit
Step 5: cd /docker/nginx/conf/
Step 6: docker cp 4aa7fdf3db6d:/etc/nginx/nginx.conf .
ps: after the file is copied successfully, delete the nginx container first
Step 7: docker rm -f nginx
Step 8: docker run -d -p 80:80 --name nginx --net host -v /docker/nginx/www:/usr/share/nginx/html -v /docker/nginx/conf/nginx.conf:/etc/nginx/ nginx.conf -v /docker/nginx/logs:/var/log/nginx nginx


<イグ

追記:/docker/nginx/www/にindex.htmlがないためアクセスが403になる可能性があるので、index.htmlを入れてみてください。