【问题标题】:Docker Error response from daemon: OCI runtime create failed container_linux.go:380: starting container process caused来自守护进程的 Docker 错误响应:OCI 运行时创建失败 container_linux.go:380:导致启动容器进程
【发布时间】:2021-10-08 16:48:25
【问题描述】:

在 PowerShell 中运行此命令后出现此错误 docker-compose up 我的 Docker 版本 Docker version 20.10.7, build f0df350 我的 Docker 信息

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
  compose: Docker Compose (Docker Inc., v2.0.0-beta.6)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.7
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.16.3-microsoft-standard-WSL2
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 12
 Total Memory: 12.43GiB
 Name: docker-desktop
 ID: 65YS:IH5I:4VI6:ZBXX:SB7J:NAR5:OSHP:OQ3S:ZGHX:653Z:KSFS:3CKX
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support

错误

[+] Running 5/6
 - Network project_default          Created                                                                        0.7s
 - Volume "project_mongo-db"        Created                                                                        0.0s
 - Container project_mongo_1        Started                                                                       12.4s
 - Container project_node-app_1     Starting                                                                      12.9s
 - Container project_react-app_1    Created                                                                        8.9s
 - Container project_nginx-proxy_1  Created                                                                        0.1s
Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/var/lib/docker/volumes/4b1671442c7499623e352a827a29d54b514fd4f186b937181a90ab497d12995c/_data" to rootfs at "/usr/src/server/node_modules" caused: mkdir /var/lib/docker/overlay2/c11386ffc7cd58452b395472bb289e20df441f5b59e1082d6d055de466b81a4e/merged/usr/src/server/node_modules: read-only file system: unknown

我从朋友那里得到的这个项目。我的朋友在项目文件夹中没有 Dockerfile,但只有:

所以我找到了很多教程,并找到了如何使用 docker-compose。这就像进展顺利,但我有这个错误。我在谷歌中发现了这个错误,但即使在 StackOverflow 中也没有人能帮助我。感谢您的帮助!!! :)

docker-compose.yml:

version: '3.4'

services:
    nginx-proxy:
        restart: always
        build:
            context: ./
            dockerfile: ./nginx-proxy/Dockerfile
        ports:
            - '${NGINX_PROXY_PORT}:${NGINX_PROXY_PORT}'
        environment:
            - NGINX_LE_PLACEHOLDER_1=${PORT}
            - NGINX_LE_PLACEHOLDER_2=${SERVER_PORT}
            - NGINX_LE_PLACEHOLDER_3=${NGINX_PROXY_PORT}
            - NGINX_LE_TZ
        depends_on:
            - node-app
            - react-app

    react-app:
        build:
            context: ./
            dockerfile: ./client/Dockerfile
        volumes: 
            - ./client:/usr/src/client:ro
            - /usr/src/client/node_modules
        depends_on: 
            - node-app
        environment: 
            - NODE_ENV=development
            - CHOKIDAR_USEPOLLING=true
        ports:
            - '${PORT}:${PORT}'
  
    node-app:
        build: 
            context: ./
            dockerfile: ./server/Dockerfile
        volumes:
            - ./server:/usr/src/server:ro
            - /usr/src/server/node_modules
        environment:
            - NODE_ENV=development
        env_file:
            - ./.env
        ports:
            - '${SERVER_PORT}:${SERVER_PORT}'
        depends_on:
            - mongo
  
    mongo:
        image: mongo:latest
        volumes:
            - mongo-db:/data/db
        ports: 
            - "27017:27017"
        environment: 
            - MONGO_INITDB_ROOT_USERNAME=
            - MONGO_INITDB_ROOT_PASSWORD=
volumes:
    mongo-db:

React 项目 Dockerfile(客户端):

FROM node:16-alpine3.11

RUN apk add --update git
WORKDIR /usr/src/client
ENV PATH /usr/src/client/node_modules/.bin:$PATH

COPY ./client/package.json ./
RUN npm install --legacy-peer-deps --silent

COPY ./client ./

CMD [ "npm", "start" ]

nginx 代理文件夹 Docker:

FROM 0x8861/nginx-le:v2.0.0
COPY ./nginx-proxy/templates/no-ssl.service.conf.dev /etc/nginx/no-ssl.service.conf

Node.js 应用程序 Dockerfile(服务器):

FROM node:lts-buster
WORKDIR /usr/src/server
COPY ./server/package*.json ./
RUN npm install
COPY ./.env ../.env
CMD ["npm", "run", "dev"]

我的 Dockerfile 名称:

再次感谢那些可以提供帮助的人! :) 如果这是重复的,我很抱歉,但我找不到如何解决它再次感谢:) 我尝试通过单个项目文件夹执行的另一件事是它可以但有另一个错误。我的朋友建议使用 docker-compose。

【问题讨论】:

    标签: docker nginx docker-compose dockerfile


    【解决方案1】:

    您似乎正在尝试使用 Docker 绑定挂载将映像中的应用程序代码替换为不同的代码。 Docker的一般模型是一个容器运行一个自包含的image;您不需要在主机上单独安装应用程序代码。

    特别是,这两个 volumes: 块会导致您看到的错误,并且可以安全地删除:

    services:
      react-app:
        build:             # <-- This block builds an image with the code
          context: ./
          dockerfile: ./client/Dockerfile
        # volumes:         # <-- So delete this block
        #   - ./client:/usr/src/client:ro
        #   - /usr/src/client/node_modules
      node-app:
        build: 
          context: ./
          dockerfile: ./server/Dockerfile
        # volumes:         # <-- And this one
        #   - ./server:/usr/src/server:ro
        #   - /usr/src/server/node_modules
    

    从机制上讲,第一行 volumes: 将映像的代码替换为与主机不同的代码,但使用只读挂载。然后第二个volumes: 行进一步尝试用来自匿名卷的旧副本替换node_modules 目录。如果node_modules 目录尚不存在,这将创建它;但父目录是只读卷挂载,导致您看到的错误。

    【讨论】:

    • services.node-app.build Additional property volumes is not allowed 新错误帮助pp
    • 删除所有 volumes: 块 - 不要重新缩进或移动它们 - 除了 mongo-db 命名卷。
    • Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.5:53: read udp 192.168.65.4:41428-&gt;192.168.65.5:53: i/o timeout这个错误我不知道怎么解决
    • error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/aa/aad77ae58e0c58ad95794d3fe2df3ba770be6633cd4321bbf423d4555813c07d/data?verify=1628000808-gcDHb1iS9IvIkD6Wn6Eu78nONxE%3D: dial tcp: lookup production.cloudflare.docker.com on 192.168.65.5:53: read udp 192.168.65.4:39028-&gt;192.168.65.5:53: i/o timeout 使用 powershell 进行 cmd 时出现此错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 2021-08-22
    • 2019-04-30
    • 2020-01-11
    • 1970-01-01
    相关资源
    最近更新 更多