一、啥叫docker in docker? ? ? ?
? ? ? ? 1.就是允許的鏡像里頭有一個docker,但這個docekr鏡像只有docker的cli和/var/lib/docker.sock的套接字,沒有允許build.然后里頭又運行了一個docker,這個docker有build的能力,此時構(gòu)建時就是里頭的docker使用外部的docker-/var/lib/docker.sock的套接字進行build鏡像。
? ? ? ? 2.重點理解 runer和執(zhí)行器,runer是gitlab的ci-agent對接gitlab,而執(zhí)行器是接受runer下發(fā)的ci的任務(wù)來干活的。
二、場景
? ? ? ? 1、使用docker 執(zhí)行器 runner的gitlab-ci
? ? ? ? 2、使用k8s執(zhí)行器 runner的gitlab-ci
? ? ? ? 3、你的gitlab-ci中需要使用容器進行build構(gòu)建鏡像時。
? ? ? ? 4、需要使用容器的彈性擴容時。
?三、安裝gitlab-runer for docker
? ? ? ? 1.創(chuàng)建持久卷
docker volume create gitlab-runner-config ??
? ? ? ? 2.安裝gitlab-runer
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
四、創(chuàng)建docker的執(zhí)行器
? ? ? ??1.在容器內(nèi)部執(zhí)行,注冊執(zhí)行器。
?
docker exec -it gitlab-runner /bin/bash
? ? ? ? 2.注冊執(zhí)行器
sudo gitlab-runner register -n \
--url http://10.10.2.183:8929 \ #你的gitlab的地址
--registration-token <Your TOKEN> \ #查看我的另一篇文章
--executor docker \
--description "My Docker Runner" \
--docker-image "docker:20.10.16" \
--docker-privileged \
--docker-volumes "/certs/client"
? ? ? ? #url和地址在我這篇文章:gitlab CI/CD 安裝 gitlab runner_A ?Charis的博客-CSDN博客
? ? ? ? 3.注冊完畢后在你的gitlab-ci/cd目錄下有一個runer的list可以直接看到這個執(zhí)行器。
? ? ? ? ? ? ? ? 1.注冊完畢:
? ? ? ? ? ? ? ? 2.gitlab驗證:
????????????????
四、Gitlab-ci如下:替換其中加粗的部分直接用。
? ? ? ??
? ? ? ? ##有了一個符合docker-dind這個工作狀態(tài)的執(zhí)行器才能夠執(zhí)行docker中構(gòu)建docker鏡像。
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: <YOUR--REGISTRY>
DOCKER_REGISTRY_PASS: <YOUR--PASSWD>
DOCKER_REGISTRY_USER: <YOUR--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?<YOUR--REGISTRY>-image:tag
- docker image ls
- docker tag <LOCAL-YOUR--REGISTRY>-image:tag?<REMOTE-YOUR--REGISTRY>-image:tag
- docker push?<REMOTE-YOUR--REGISTRY>-image:tag文章來源:http://www.zghlxwxcb.cn/news/detail-646309.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-646309.html
到了這里,關(guān)于Gitlab CI/CD筆記-第三天-使用主機docker in docker 進行構(gòu)建并push鏡像。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!