当我运行 docker 文件时,收到来自 docker 的错误。它说 /var/lib/docker/aufs/layers/xxxx: 当我运行 Docker build 时没有这样的文件或目录。
我尝试了多种方法来删除容器和图像,所以我对这个非常了解。
任何
Docker 文件是:
FROM node:6
RUN git clone https://github.com/preboot/angular2-webpack.git
WORKDIR angular2-webpack
RUN sed -i.bak 's/--port 8080/--host 0.0.0.0 --port 8080/'
package.json RUN npm i
CMD [ "npm", "run", "start" ]
完整的控制台输出是:
Sending build context to Docker daemon
9.728 kB
Step 1 : FROM node:6
6: Pulling from library/node
6a5a5368e0c2: Already exists
7b9457ec39de: Already exists
ff18e19c2db4: Already exists
6a3d69edbe90: Already exists
0ce4b037e17f: Already exists
82252a100d5a: Already exists
Digest:
sha256:db245bde5445eb122d8dc090ba98539a9ef7f56c0ea981ade643695af0d8eaf0
Status: Downloaded newer image for node:6
---> 9873603dc506 Step 2 :
RUN git clone https://github.com/preboot/angular2-webpack.git open
/var/lib/docker/aufs/layers/9319fd93cb6d6718243ff2e65ce5d2aa6122a1bb9211aa9f8e88d85c298727e5:
no such file or directory User:docker-test
编辑
感谢@BMitchs的建议,问题得到了解决:
对于这种损坏,我会尝试一次完整的 docker 擦拭,
rm -rf /var/lib/docker/*
。在此之前,请备份所有数据(卷),然后关闭 docker,然后您需要再次拉取或重建所有映像。如果 aufs 仍然存在问题,请尝试更改文件系统驱动程序,例如在服务启动中更改为 dockerd -s overlay2
。
首先检查常见问题(例如磁盘空间不足或应用程序旧版本)并没有什么坏处。
尝试在干净的机器上再次构建图像或使用 --no-cache 标志,这似乎是一个缓存问题。
另外 - 在我的公司,我们将代码克隆到构建映像的机器中,然后将代码复制到容器中。在我看来 - 这是一个更好的解决方案,但我认为这是一个品味问题。
Docker 使用的数据文件已损坏。您可以执行以下命令:
1-如果存在,删除包含和图像
docker rm CONTAINER ID
docker rmi IMAGE ID
2-停止 Docker 服务(Ubuntu)
service docker stop
3-启动Docker服务(Ubuntu)
service docker start
4-检查Docker服务状态(Ubuntu)
service docker status
当我在几个月后再次遇到同一问题时,我在这里写下这个答案,部分是为了自己。
如果您在 windows 上运行 docker 并收到有关在 shell script 入口点(或一般情况)找不到文件的错误,请确保脚本没有
CRLF
行结尾。否则,它们的行为就会很奇怪,尝试调试就很糟糕。
docker system prune -af
为我工作