什么是<none>存储库和标签?当我使用docker build时它们为什么会出现?

425*_*esp 23 docker

这是docker images我跑前的表现docker build.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myapp               latest              a38da0bd9e0b        6 seconds ago       523.8 MB
golang              onbuild             b4997c557048        10 days ago         517.2 MB
Run Code Online (Sandbox Code Playgroud)

在对myapp源代码进行一些更改后,我运行docker build -t myapp .并最终得到了名为的图像<none>.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED                      VIRTUAL SIZE
myapp               latest              a38da0bd9e0b        Less than a second ago ago   523.8 MB
<none>              <none>              e4209f97e819        10 minutes ago               523.8 MB
golang              onbuild             b4997c557048        10 days ago                  517.2 MB
Run Code Online (Sandbox Code Playgroud)

我知道我可以删除它们docker rmi <IMAGE ID>,但为什么会发生这种情况呢?我怎样才能防止这种情况发生?在Dockerfile我的建筑看起来像这样.

FROM golang:onbuild
EXPOSE 8080
Run Code Online (Sandbox Code Playgroud)

L0j*_*j1k 20

如果您将标记或图像名称重新分配给其他图像,则图像将丢失其标记或名称.这真的很简单.您的带有ID myapp标记的repo图像曾在图像ID上进行命名和标记.latesta38da0bd9e0be4209f97e819

  • 您多次使用 `docker build -t myname/NewImage:0.1 .` 构建了一个镜像。第一次执行此操作时,它会创建一个标记为“myname/NewImage:0.1”的图像。第二次执行此操作时,它会创建一个 *new* 图像,该图像带有 `myname/NewImage:0.1` 标签,而你构建的 *第一个 * 图像带有 `&lt;none&gt;` 标签。 (7认同)
  • 您可以执行诸如`docker tag e4209f97e819 myName/myApp:latest` 之类的操作,它将被标记,但请记住,如果另一个图像具有相同的标记,则可以取消标记。[此处](https://docs.docker.com/userguide/dockerimages/#setting-tags-on-an-image) 是有关标记的更多信息。祝你好运! (3认同)