Gitlab CI/CD笔记-第三天-使用主机docker in docker 进行构建并push镜像。

一、啥叫docker in docker

        就是允许的镜像里头有一个docker,但这个docekr镜像只有docker的cli和/var/lib/docker.sock的套接字,没有允许build.然后里头又运行了一个docker,这个docker有build的能力,此时构建时就是里头的docker使用外部的docker-/var/lib/docker.sock的套接字进行build镜像。

二、场景

        1、使用docker 执行器 runner的gitlab-ci

        2、使用k8s执行器 runner的gitlab-ci

        3、你的gitlab-ci中需要使用容器进行build构建镜像时。

        4、需要使用容器的弹性扩容时。

三、Gitlab-ci如下:替换其中加粗的部分直接用。

stages: # List of stages for jobs, and their order of execution

- build-image

build-image-job:

stage: build-image

image: docker:19.03.13

tags:

- docker-dind

variables:

#CI_REGISTRY_PROJETY: harbor.com:543/spring_boot-ci

#DOCKER_IMAGE_NAME: ci-java-web

#DOCKER_IMAGE_TAG: v1

DOCKER_REGISTRY:

DOCKER_REGISTRY_PASS: <YOUR--PASSWD>

DOCKER_REGISTRY_USER:

DOCKER_TLS_CERTDIR: "/certs"

services:

- name: docker:19.03.13-dind --

alias: docker --必须写,不然报错

before_script:

- echo "$DOCKER_REGISTRY_PASS" | docker login $DOCKER_REGISTRY --username $DOCKER_REGISTRY_USER --password-stdin

script:

- docker pull -image:tag

- docker image ls

- docker tag -image:tag -image:tag

- docker push -image:tag






 

你可能感兴趣的:(云原生,gitlab,ci/cd,笔记)