这篇文章主要是记录在使用 docker load 命令的过程中遇到的坑,因为在网络上没有找到相关的资料,所以记录下来,祭奠我浪费的6个小时。
首先,需求是在一个无外网环境中导入 docker images,一个可行的方法是将可用的镜像打包成 tar 包,然后传输到需要的地方,再重新将 tar 包导入到 docker 中。
镜像转文件的命令是: docker save image > /root/image.tar
文件转镜像的命令是: docker load < /root/image.tar 或者 docker load -i /root/image.tar
坑 1 是: requested load from stdin, but stdin is empty
结论 : docker load 的时候, < 误写成 >, 会出现这个错误,并且原 tar 包会被修改,修改后就不可用了
坑 2 是: open /var/lib/docker/tmp/docker-import-054903443/repositories: no such file or directory
结论 : 如果你使用过坑 1 中的命令,那么即使你之后的命令都是正确的,你也会遇到上述错误,避免的办法是不要输错命令。倘若你已经输错了,那么唯一可用的方法是删除当前的 tar 包,并且重新获取 tar 包,如果不是就地编译的 tar 包, 而是其他地方复制过来的,那么原 tar 包还是可用的。