pull&&retag&&push
从源仓库拉取镜像,改名,推送,根据实际情况修改源地址和目标地址
#!/usr/bin/env python3
import subprocess
import sys
def pull_rename_push_image(image_name, target_repo):
# 拉取镜像
subprocess.check_call(["docker", "pull", image_name])
# 获取镜像ID
result = subprocess.Popen(
["docker", "images", "-q", image_name],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True,
)
image_id = result.communicate()[0].strip()
# 生成新的镜像名称
new_image_name = "{}/{}".format(target_repo, image_name)
# 给镜像打标签
subprocess.check_call(["docker", "tag", image_id, new_image_name])
# 推送镜像到私有仓库
subprocess.check_call(["docker", "push", new_image_name])
print("镜像 {} 已成功推送到 {}".format(image_name, target_repo))
def main():
if len(sys.argv) != 2:
print("Usage: python pull.py <image_name>")
sys.exit(1)
image_name = sys.argv[1]
# 选择目标仓库
print("请选择目标仓库:")
print("1. harbor.iovhm.com/public")
print("2. swr.cn-south-1.myhuaweicloud.com/vp-public")
choice = input("请输入选项编号 (1 或 2): ")
if choice == "1":
target_repo = "harbor.iovhm.com/public"
elif choice == "2":
target_repo = "swr.cn-south-1.myhuaweicloud.com/vp-public"
else:
print("无效的选项")
sys.exit(1)
# 执行拉取、改名、推送操作
pull_rename_push_image(image_name, target_repo)
if __name__ == "__main__":
main()
# python3 pull.py nginx:latest