自定义图像上的“docker load”创建一个 <none> 图像名称

E23*_*235 2 docker dockerfile docker-image

当我使用该docker load命令时,它创建了一个带有<none>标签的图像。
我现在将展示如何重现它。

我创建了一个 Dockerfile:

cat > chacha <<EOF
FROM alpine:latest
ENTRYPOINT sh;
WORKDIR /home
EOF  
Run Code Online (Sandbox Code Playgroud)

构建它:

docker build -t chacha -f chacha .
Run Code Online (Sandbox Code Playgroud)

将其导出到文件:

image_id=`docker images chacha -q`
docker save $image_id -o myimage.tar
Run Code Online (Sandbox Code Playgroud)

删除旧图像:

docker rmi chacha
Run Code Online (Sandbox Code Playgroud)

当我加载导出的图像时:

docker load --input myimage.tar
Run Code Online (Sandbox Code Playgroud)

图像名称显示为<none>

# docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
<none>                                                 <none>              ff35873eb8df        4 minutes ago       4.41 MB
Run Code Online (Sandbox Code Playgroud)

leo*_*pal 5

这是使用图像 ID 保存图像时的默认行为。一个图像 ID 可以有多个标签。

例如,在您的情况下,执行 adocker tag $image_id chacha2将创建一个chacha2与初始图像具有相同图像 ID的新图像。

因此,当根据其图像 ID 保存图像时,docker 守护进程不知道您要导出哪个图像的详细信息,并最终保存没有存储库/标签详细信息的图像。

您可能需要的是docker save chacha > myimage.tar. 加载此 tar 时,导入的图像将包含初始图像的存储库/标签详细信息。

更多的: