我正在尝试更改图像的存储库名称:
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
我该怎么做?
下面的python代码重命名多个图像,然后推回到新的存储库。这是一个用python3.6编写的docker存储库迁移代码
import docker
client = docker.from_env()
docker_api = docker.APIClient()
images = client.images.list()
for image in images:
try:
if image.tags[0] and '<old repository>' in image.tags[0]:
version = image.tags[0].split("/")[-1]
type(version)
print("version is {}".format(version))
docker_api.tag(image.tags[0],"<new repository>/{}".format(version))
except Exception as Ex:
print(image)
print(Ex)
然后通过下面的shell脚本推送图像
docker images | grep <new repository> | awk '{print $1":"$2}' | xargs -L1 docker push
docker image tag server:latest myname/server:latest
or
docker image tag d583c3ac45fd myname/server:latest
标签只是完整图像名称(d583c3ac45fd…)的人类可读别名。
因此,您可以根据自己的喜好将它们中的任意多个与同一图像关联。如果您不喜欢旧名称,可以在重新标记后将其删除:
docker rmi server
这只会删除别名/标记。由于d583c3ac45fd具有其他名称,因此不会删除实际图像。
如何重命名图像?
要复制图像或重命名现有图像,只需从现有图像创建新标记或存储库。您可以使用docker标记命令执行此操作。
syntax/command: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
#=> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-git latest c0aaaba33a60 18 hours ago 208MB
docker tag ubuntu-git:latest ubuntu-git:latest-new-tag
#=> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-git latest c0aaaba33a60 18 hours ago 208MB
ubuntu-git latest-new-tag c0aaaba33a60 18 hours ago 208MB