我正在尝试更改图像的存储库名称:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
server              latest              d583c3ac45fd        26 minutes ago      685.5 MB

因此,我想将名称服务器更改为类似myname/server的名称:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
myname/server       latest              d583c3ac45fd        26 minutes ago      685.5 MB

我该怎么做?


当前回答

docker image tag #imageId myname/server:latest

这对我有用

其他回答

最近,我不得不将一些图像从Docker注册表(Docker.mycompany.com)迁移到Artifactory(Docker.Artifactory.mycompany.com)

docker pull docker.mycompany.com/something/redis:4.0.10
docker tag docker.mycompany.com/something/redis:4.0.10 docker.artifactory.mycompany.com/something/redis:4.0.10
docker push docker.artifactory.mycompany.com/something/redis:4.0.10
docker tag CURRENT_IMAGE_NAME DESIRED_IMAGE_NAME

您可以使用以下命令更改多个repo/tag标记:

docker images --filter=reference='server' --format='{{.Repository}}:{{.Tag}}' | xargs -r -P$(nproc) -I {} docker image tag {} myname/{}

要重命名图像,请给它一个新标记,然后使用“rmi”命令删除旧标记:

$docker标签$docker rmi美元

第二步很吓人,因为“rmi”的意思是“删除图像”。然而,如果图像有任何其他标记,docker实际上不会删除该图像。也就是说,如果您要立即使用:docker rmi,那么它实际上会删除图像(假设没有其他标记分配给图像)

由于Docker不提供图像重命名功能,以下是如何在三个命令中有效地重命名Docker图像:

docker pull UglyOldTag
docker tag  UglyOldTag ShinyNewTag
docker rmi  UglyOldTag

注意:这实际上只是添加一个新标签并删除旧标签。如上所述,标记实际上只是图像ID字段的助记符别名或指针。如果这还不够令人困惑的话,Docker API和文档也经常使用“标记”来指代版本(即图像名称中“:”后面的部分,如MyImage**:**最新版本)。

然而,拼写错误和错误的名称并不是唯一需要重命名标记的地方。例如,如果您使用的是亚马逊的ECR,则在您签入图像之前,您需要指定完整的ARN作为标记。这意味着你的标签又大又丑!

注意:在下面的示例中,请记住Amazon和DockerHub将docker图像的每个层次结构称为“存储库”。

# Create the ECR 'repository' for the image 
aws ecr create-repository \
    --repository-name myFavoriteTag \
    --image-scanning-configuration scanOnPush=true \
    --region myFavoriteRegion
docker tag myFavoriteTag:latest aws_account_id.dkr.ecr.aws_region.amazonaws.com/myFavoriteTag:latest
docker push aws_account_id.dkr.ecr.aws_region.amazonaws.com/myFavoriteTag:latest

所以,一个快速清理丑陋的方法是

ECR_BASE==aws_account_id.dkr.ecr.aws_region.amazonaws.com
docker pull ${ECR_BASE}/myFavoriteTag
docker tag  ${ECR_BASE}/myFavoriteTag myFavoriteTag
docker rmi  ${ECR_BASE}/myFavoriteTag
docker run myFavoriteTag

当然,要把它重新检查到ECR中,你必须把丑陋的东西重新穿上

docker tag ${ECR_BASE}/myFavoriteTag:latest