Docker-compose内部错误:无法创建临时目录。

39

我正在尝试使用docker-compose命令来启动容器。但是,我遇到了“INTERNAL ERROR:cannot create temporary directory!”的错误。我无法拉取、停止、删除或启动容器。请问有人可以建议如何解决此问题吗?


你能否说明你是在Windows/Mac上使用Docker还是在Linux上本地使用? - Roman
2
我的虚拟机没有剩余空间了,因此它无法正常运行。 - RK3
你怎么解决 @RK3 这个问题? - user1301037
我删除了从仓库拉取的所有Docker镜像。docker rmi <IMAGEID> - RK3
4个回答

49

我曾经遇到过同样的问题。后来发现我的磁盘空间已用完。

我只需要通过运行以下命令来清理旧的容器和镜像。我在我的Docker目录下运行了这些命令,之后一切都很好。

删除容器命令:

#!/bin/bash
# Remove all stopped containers
docker rm $(docker ps -a -q)
# Remove all containers
docker rm -f $(docker ps -a -q)

命令选项:

--force-f:强制删除正在运行的容器(使用 SIGKILL 信号)。

--volumes-v:删除与容器关联的卷。

--link-l:删除指定的链接。

删除镜像命令:

# Delete all images
docker rmi $(docker images -q)

命令选项:

--force-f:强制删除镜像。 --no-prune:不要删除未标记的父级。

系统清理命令:——由Ryan Allan在评论中提出。

#!/bin/bash
#System Prune
docker system prune

--all-a:不仅删除空悬镜像,还删除所有未使用的镜像。

--filter:提供过滤器值(例如'label ==') <-- 来自API 1.28+

--force-f:无需确认即可执行操作。

--volumes:清除存储卷。

基本命令:

docker:Docker CLI的基本命令。

代码引用自Docker删除所有图像和容器


1
这是一个磁盘空间问题。然而,在移除容器和镜像之前,我建议检查存储被填满的所有原因。 - Vivek Kodira
2
docker system prune 可以很好地清理所有内容,包括卷和网络。 - Ryan Allen

9

您的Docker缓存所在的磁盘空间已满,可以通过运行命令df -h进行验证。要解决此问题,您需要清理磁盘空间,例如,您可以清理Docker缓存,请参考下面的小脚本。

此解决方案基于Popeye的答案,但是强制停止了所有镜像:

#!/bin/bash
# Force stop all containers
docker kill $(docker ps -q)
# Delete all containers
docker rm $(docker ps -a -q)
# Delete all images
docker rmi $(docker images -q)

但正如 Ryan Allen 所说,最好使用 docker system prune 命令来删除所有容器、镜像和网络。因此,脚本的最终形式应该是:

#!/bin/bash
# Force stop all containers
docker kill `docker ps -q`
# Delete all containers, images and networks
docker system prune

享受吧!


3

要删除Ubuntu上Docker使用的空间,您可以按照以下步骤进行:

  1. 删除已停止的容器:首先,在终端中运行以下容器子命令来删除任何已停止的容器:
sudo docker container prune -f

这里上面的命令将删除所有未关联运行容器的已停止容器。

2. 删除未使用的镜像: 接下来,您可以在终端中运行以下命令来删除任何未使用的镜像:

sudo docker image prune -a -f

上述命令可以包括悬空镜像(即未与任何容器关联的镜像)和未使用的镜像(即未被任何容器使用的镜像)。

  1. 删除未使用的卷:最后,您可以删除任何未使用的卷,包括未与任何容器关联的卷。您可以在终端中运行以下命令:
sudo docker volume prune -f

这个命令将删除所有未使用的卷,

通过运行这些命令,您应该能够释放Ubuntu上Docker使用的一些空间。


2

对于在虚拟机内使用docker的人来说,可能会无意中断开存储虚拟机镜像的驱动器连接。就像我的情况一样。如果发生这种情况,最好停止虚拟机,确保驱动器已连接,然后重新启动。


1
好的观点。向上! - Caio V.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接