在 Windows 上成功设置 Docker 和 WSL(Ubuntu 18.04)后,我可以成功运行 Docker 并从 WSL 中构建图像。我在这里关注了 Nick Janetakis 的优秀文章
但是,当我运行容器时,出现此错误:
来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:344:启动容器进程导致“exec:\”/bin/docker-entrypoint.sh\”:stat /bin/docker-entrypoint.sh:没有这样的文件或目录”:未知
容器 Dockerfile 是这样的:
FROM ruby:2.4-alpine
RUN apk update && apk add build-base postgresql postgresql-dev git less make
RUN mkdir /app
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install
# Clean up
RUN apk del build-base
COPY . /app/
EXPOSE 2999
EXPOSE 3000
ENTRYPOINT ["bin/docker-entrypoint.sh"]
因此它无法找到入口点文件,即使它在 WSL 的 /bin 中。
据我所知,这不是其他博客/问题中报告的 windows/unix CR/LF 问题。
那么我怎样才能让这个 dockerfile '看到' WSL 中的入口点文件(即它在 WSL 的容器中)?
笔记
如果我将最后一行更改为 ENTRYPOINT ["echo","Hello"] 然后它会运行,但显然不会调用入口点脚本。我试图理解为什么它找不到那个脚本,因为它就在那里。
问题是无法再访问 docker-compose 挂载驱动器。
这是因为我在本周早些时候重置了我的 Windows 密码,导致 Docker 桌面/Windows 共享驱动器丢失。
由于我们使用 docker-compose 为应用挂载一个卷,它无法再看到它,因为共享驱动器不再在 Docker Dekstop 中打开。
这个:https : //github.com/Microsoft/WSL/issues/1854#issuecomment-387778063
从 docker-compose 文件: api: build: 。命令:puma -C config/puma.rb 卷:- .:/app
从 docker-compose 的角度来看,卷基本上是空的,因此文件未找到错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句