Docker错误响应守护程序:处理tar文件时出错(退出状态1):设备上没有剩余空间。

5

我需要从虚拟箱映像创建docker映像文件,该文件大小为16GB。当我运行命令行# tar -c . | docker import - <myImagename>时,出现以下错误。

P.S.:容器为空。

错误:

守护程序的错误响应:处理tar文件时出错(退出状态1):写入 /var/lib/docker/overlay2/f8bb15057c3b3578c13e1122be1d00ca72b3301b7a0bf27262edc759e9f207fb/diff/var/lib/docker/overlay2/f8bb15057c3b3578c13e1122be1d00ca72b3301b7a0bf27262edc759e9f207fb/diff/var/lib/cassandra/commitlog/CommitLog-6-1633100360364.log: 设备上没有剩余空间

Docker信息:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 1
 Server Version: 20.10.8
 Storage Driver: overlay2
  Backing Filesystem: xfs
  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: e25210fe30a0a703442421b0f60afac609f950a3
 runc version: v1.0.1-0-g4144b63
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-1127.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 15.51GiB
 Name: GDBDEV03
 ID: UGGJ:AIIA:7C44:DZXR:PNYH:2WQH:GPKI:TFUL:N2WZ:5RRB:X3JK:VU3B
 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

编辑

[root@GDBDEV03 chroot0]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 7.8G     0  7.8G   0% /dev
tmpfs                    7.8G     0  7.8G   0% /dev/shm
tmpfs                    7.8G  8.7M  7.8G   1% /run
tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/mapper/centos-root   14G   13G  1.3G  91% /
/dev/sda1               1014M  152M  863M  15% /boot
tmpfs                    1.6G     0  1.6G   0% /run/user/0
3个回答

11

谢谢您的回复,但在提问之前我已经尝试了所有这些步骤。仓库是空的,没有图像,什么都没有。我看到有几个人遇到了同样的问题,但对我来说没有解决方案。您能否知道另一种方法? - Luciana Oliveira
1
你能否释放系统上的任何空间?运行"df -h"命令,你应该会发现某个挂载点已经满了100%。 - Peter Hauge
@PeterHauge,我运行了df -h命令。我更新了问题。 - Luciana Oliveira

1
“不清楚您想要做什么( . 在哪里,这是本地Docker引擎还是将镜像发送到远程节点)。 将VM映像放入容器映像中是一个重要的代码气味(容器不是VM)。
话虽如此,从描述来看,您正在尝试在可用于docker的系统上打包一个16GB的文件(假设您正在从/ var / lib / docker运行docker),无论任何情况下都不可能。 通常,您需要2-3倍的空间来处理所需的复制以打包层。
因此,对于根分区,您需要将其从14GB扩展到45GB(13个当前+3x16)。 扩展分区的步骤取决于底层存储和文件系统类型,并且更适合于superuser.SE。”

是的,我正在尝试从/mnt/chroot0创建一个Docker镜像。我正在使用命令行tar -c . | docker -import - <image_name>。虚拟机有16GB内存。我看了你的回答,这是不可能的,对吗?解决方案是购买更多的RAM,对吗? - Luciana Oliveira
1
@LucianaOliveira 更大的硬盘,而不是更多的RAM。但这仍然感觉像你在做一些非常错误的事情。导入命令是设计用于从docker导出中导入的,我不知道它是否会处理任意的tar文件,即使它这样做了,你得到的只是文件系统,而不是内核,也不是所有运行的服务,因为容器不是虚拟机。 - BMitch
那么,从虚拟机创建Docker镜像的最佳方法是什么?我需要通过Docker部署整个环境。所有我需要的东西都在\mnt\chroot0中。我将使用小部分进行一些处理,这很重要。您有任何更好的想法吗? - Luciana Oliveira
1
@LucianaOliveira 建议使用 Dockerfile 和 docker build 创建镜像,从最小的基础镜像开始(Docker Hub 的官方镜像中有很多可供选择),然后添加您的应用程序。这样做可以实现可重复性,并且更容易更新。虚拟机打包主机,容器打包应用程序,两者之间没有直接的对应关系。 - BMitch
谢谢,BMitch!你能用这个解释回答我的问题吗?你是唯一理解我的观点的开发者。我错了。现在我已经构建了我的第一个图像。 - Luciana Oliveira

0

使用Docker Hub的官方镜像作为基础镜像,而不是自己创建一个所有者基础镜像,解决了错误。这篇文章教给了我很多东西。我祝贺所有做出贡献的人。我将提示分开以开始解决方案:

"@LucianaOliveira建议创建镜像的方法是使用Dockerfile和docker build,从最小的基础镜像开始(Docker Hub的官方镜像中有许多选择),然后添加您的应用程序。这是可重复的,并且更容易更新。虚拟机打包主机,容器打包应用程序,两者之间没有直接的转换。- BMitch"


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