三海豹dind與GitLab Runner研究1

三海豹dind與GitLab Runner研究-RHEL8

ZONGRU Li
7 min readAug 25, 2022

首先在RHEL8機台上裝好三海豹跟gitlab-runner

#查看可用模組:
sudo yum module list
#安裝三海豹整組工具:
sudo yum module install container-tools -y

接下來參考官網安裝GitLab Runner:

LINK
#這步可能會變,還是去複製官網:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
#安裝:
sudo yum install gitlab-runner -y

參考這篇解說嘗試建立podmandind模式的GitLab Runner

LINK
#一開始我先確定剛安裝完的podman服務狀態:
systemctl status podman
#啟動podman socket :
sudo systemctl enable --now podman
#再次確認podman服務狀態:
systemctl status podman

根據以下內容做一些確認:

有podman.sock
#試著執行上述語法(多帶sudo)用podman充當docker runner,另外改預設image:
sudo gitlab-runner register \
--non-interactive \
--name "<YOUR_GITLAB_RUNNERS_NAME>" \
--url "<GITLAB_SERVER_URL>" \
--registration-token "<GITLAB_REGISTRATION_TOKEN>" \
--executor docker \
--docker-privileged=true \
--env "DOCKER_HOST=unix:///var/run/podman/podman.sock" \
--docker-image "docker:20.10.16"\
--docker-volumes "/run/podman/podman.sock:/var/run/podman/podman.sock" \
--tag-list "podman,docker,privileged"

我實際執行大概改為:

sudo gitlab-runner register \
--non-interactive \
--name "<GITLAB_RUNNERS名稱>" \
--url "<GITLAB_SERVER_URL位置>" \
--registration-token "<GITLAB_REGISTRATION_TOKEN要去gitlab找>" \
--executor docker \
--docker-privileged=true \
--env "DOCKER_HOST=unix:///var/run/podman/podman.sock" \
--docker-image "docker:20.10.16"\
--docker-volumes "/run/podman/podman.sock:/var/run/podman/podman.sock" \
--tag-list "podman,docker,privileged"

目前學GitLab CI.gitlab-ci.yml檔案目前內容如下:

我試著改寫這兩步:

最後在build就掛了:

找了一下可能是名稱換了:

這邊先想辦法把gitlab-ruuner反註冊

前後有試了一些指令都沒辦法反註冊:

接著嘗試另外建gitlab runner:

#改用新的option來給定docker-host位置,這次名稱多2:
sudo gitlab-runner register \
--non-interactive \
--name "podman-dind2" \
--url "https://gitlab.com/" \
--registration-token "{我gitlab上面串runner的token}" \
--executor docker \
--docker-privileged=true \
--docker-host "unix:///var/run/podman/podman.sock" \
--env "DOCKER_HOST=unix:///var/run/podman/podman.sock" \
--docker-image "docker:20.10.16"\
--docker-volumes "/run/podman/podman.sock:/var/run/podman/podman.sock" \
--tag-list "podman,docker,privileged"
#如上也就是多這行--docker-host "unix:///var/run/podman/podman.sock" \

重跑:

看起來在root底下真的有拉docker:20.10.16的image:

後來看一看jq那段不用應該也沒差,只是給一個比較複雜但是完整的tag

暫時省略成:

重跑看到:

build image過了!,詳細log:

看起來可以!

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet