简要说明如何通过Linux指令将特定的Docker镜像手工上传到Harbor仓库

  1. Harbor系统的访问地址为http://aeectss.xxxx.local:30005/,在要操作的电脑上确保已经给/etc/docker/daemon.json添加了insecure-registries的配置,使得Harbor在非HTTPS协议下也能上传

    1
    2
    3
    
    {
      "insecure-registries": ["aeectss.xxxx.local:30005"],
    }
    

    若没有上述配置,在添加完毕之后需要通过systemctl daemon-reload && systemctl restart docker让修改生效

  2. 确保要操作人员的账户在harbor中对应的项目下具有项目管理员权限,类似如下图所示

    harbor项目给用户授权

  3. 在对应电脑的终端上执行下述指令,此处的账号为前一个步骤配置好的具有权限的账号

    1
    2
    3
    4
    5
    6
    
    image=orienlink-frame-extraction:1.3.4.3 \
    && docker login -u yunqaing.lu -p xxxx aeectss.xxxx.local:30005  \
    && docker tag  orienlink-frame-extraction:1.3.4.4 aeectss.xxxx.local:30005/orienlink-product-library/$image  \
    && docker push aeectss.xxxx.local:30005/orienlink-product-library/$image  \
    && docker rmi aeectss.xxxx.local:30005/orienlink-product-library/$image  \
    && docker logout aeectss.xxxx.local:30005
    

    或将上述命令修改为更灵活的shell脚本,类似如下:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    #!/bin/bash
    printf "请输入对应的用户名:"
    read username
    
    read -s -p "请输入对应的密码:" password
    
    printf "\n请输入要上传的镜像与版本:"
    read tag
    
    docker login -u $username -p $password aeectss.xxxx.local:30005
    docker tag $tag aeectss.xxxx.local:30005/orienlink-product-library/$tag
    docker push aeectss.xxxx.local:30005/orienlink-product-library/$tag
    docker rmi aeectss.xxxx.local:30005/orienlink-product-library/$tag
    docker logout aeectss.xxxx.local:30005
    
  4. 若一切正常,执行结果类似如下所示

    docker镜像上传结果

  5. harbor仓库检测后可发现对应的镜像已经上传成功

    harbor中项目镜像上传成功

  6. 若重复上传同一个tag的镜像,则第二次上传会较快。