Gitlab使用Docker Buildx进行多重构建镜像并上传至私有Harbor与Dockerhub

作者:KAKAKA2024.01.18 03:38浏览量:22

简介:本文将介绍如何使用Gitlab CI/CD和Docker Buildx进行多重构建镜像,并将镜像上传至私有Harbor仓库和Docker Hub。我们将通过实例演示整个过程,并提供可操作的建议和解决问题的方法。

在Gitlab中使用Docker Buildx进行多重构建镜像并上传至私有Harbor与Dockerhub需要经过以下步骤:

  1. 预备条件
    为了完成本教程,您需要以下条件:
  • 三台虚拟机:一台用于运行Gitlab CI/CD,一台用于运行私有Harbor仓库,另一台用于运行Docker守护进程。确保这些虚拟机上已经安装了Docker和Docker Compose。
  • 私有Harbor仓库:用于存储构建的镜像。确保您已经配置好了私有Harbor仓库,并能够通过HTTP或HTTPS进行访问。
  • Docker Hub账户:用于将镜像推送到公共仓库中。确保您已经注册了一个Docker Hub账户。
  1. 配置Gitlab CI/CD
    在Gitlab中,您需要配置一个包含Docker Buildx的.gitlab-ci.yml文件。在该文件中,您可以定义构建过程和镜像构建选项。以下是一个示例配置:
    ```yaml
    image: docker:latest
    docker:
  • builder: docker.io/docker/docker:latest
    runtime: linux-amd64
    version: “19.03”
  • builder: docker.io/docker/docker:dind
    runtime: linux-arm64
    version: “19.03”
  • builder: docker.io/docker/docker:latest
    name: docker-custom
    runtime: linux-s390x
    version: “19.03”
    variables:
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: “$CI_PROJECT_DIR/certs”
    docker-compose:
    script:
  • docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  • docker-compose pull
  • docker-compose build —force-recreate —no-cache
  • docker-compose push
    echo “Pushing image to Docker Hub”
    script:
  • echo “Pushing image to Docker Hub”
  • docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PASSWORD docker.io
  • docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME $DOCKER_HUB_IMAGE:$CI_COMMIT_REF_NAME
  • docker push $DOCKER_HUB_IMAGE:$CI_COMMIT_REF_NAME
    echo “Pushing image to Harbor”
    script:
  • echo “Pushing image to Harbor”
  • docker login -u $HARBOR_USER -p $HARBOR_PASSWORD $HARBOR_REGISTRY
  • docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME $HARBOR_IMAGE:$CI_COMMIT_REF_NAME
  • docker push $HARBOR_IMAGE:$CI_COMMIT_REF_NAME
    ```
    上述配置中,我们定义了多个Docker构建器和运行时,以支持不同的架构。我们使用了docker、docker:dind和docker:latest作为构建器,分别对应不同的运行时。我们还定义了一个名为docker-custom的自定义构建器。在构建过程中,我们执行了docker login命令来登录私有Harbor仓库和Docker Hub,然后使用docker-compose pull、docker-compose build和docker-compose push命令来构建和推送镜像。我们还使用echo命令输出了一些日志信息,以便了解构建过程的状态。最后,我们将构建的镜像推送到Docker Hub和Harbor仓库中。
    请注意,上述示例配置仅供参考,您可能需要根据您的实际需求进行修改。确保将配置中的变量替换为您自己的实际值。
  1. 上传镜像至私有Harbor仓库与Docker Hub
    在Gitlab CI/CD中,我们已经将镜像推送到私有Harbor仓库和Docker Hub中。如果您需要手动上传镜像,可以使用以下命令:
    docker tag :<