docker - 来自守护进程的 Docker 错误响应:OCI 运行时创建失败 container_linux.go:380:导致启动容器进程
问题描述
在 PowerShell 中运行此命令后出现此错误
docker-compose up
My Docker Version
Docker version 20.10.7, build f0df350
My Docker Info
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 中也没有人能帮助我。感谢您的帮助!!!:)
码头工人-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"]
再次感谢那些可以提供帮助的人!:) 如果这是重复的,我很抱歉,但我找不到如何修复它再次感谢 :) 我尝试通过单个项目文件夹进行的另一件事它可以但有另一个错误。我的朋友建议使用 docker-compose。
解决方案
看起来您正在尝试使用 Docker 绑定挂载将映像中的应用程序代码替换为不同的代码。Docker 的一般模型是一个容器运行一个自包含的镜像;您不需要在主机上单独安装应用程序代码。
特别是,这两个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
如果目录尚不存在,这将创建目录;但父目录是只读卷挂载,导致您看到的错误。
推荐阅读
- python - 如何根据 Scrapy 中第一个请求的响应构造请求列表?
- ansible - 为什么 ansible set_fact 列表结果包含很多 // //
- python - 如何在列之间执行划分并将答案存储在新的数据框中
- python - 为什么 Lebniez 系列 PI 的 Shanks 转换需要很长时间?
- riscv - 区分 rv64imafd 和 rv64imafdc isa
- ios - 在 SwiftUI 选项/最佳实践中结合数据源/持久性?
- regex - 使用正则表达式从 0 到 999 之间的数字中提取带有数字的字符串
- ios - 调整 UIImageView 的大小保持纵横比
- python - 我如何使用 Python 处理新加坡车牌的校验和
- python - 获取分层熊猫数据框中的先前值