Docker输出镜像文件的一个错误

在执行 docker save -o ×××.tar 时出现写入空间不足的错误:

write .dockertemp048390495: no space left on device

在网上百度了一遍,发现出现空间不足的原因有很多,用系统命令查询后发现,不存在真实空间不足的问题,为了分析原因今天再进入系统测试了一遍,竟然没有再现错误,翻看前面执行过的命令,似乎是刚才的save命令是在根目录执行的,而以前是在当前用户目录下执行,切换到用户目录下执行save命令,问题重现。

通过实验得知,docker save命令是在当前目录下生成tar文件,如果当前目录有写入权限并没有空间限制,且确实磁盘有足够的空间,这个命令正确执行。我的问题是我的用户主目录空间没有定义好,以root身份cd到根目录后自然没有权限和空间限制。

由于docker是系统命令,实际可以先cd到想要存放文件的位置再执行命令,这样就不会出现各种不可预测的错误,还省去了命令后将文件移动到正确位置的操作。当然也可以直接在save命令中加上文件的绝对路径,如/aaa/bbb/ccc.tar,这样也会将生成的tar文件放入正确位置。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注