簡體   English   中英

為 gitlab-ci 使用緩存 docker 圖像

[英]Use cache docker image for gitlab-ci

我想知道是否可以在 gitlab-ci 的 gitlab 注冊表中使用緩存的 docker 圖像? for example, I want to use node:16.3.0-alpine docker image, can I cache it in my gitlab registry and pull it from that and speed up my gitlab ci instead of pulling it from docker hub?

是的,GitLab 的依賴代理功能允許您將 GitLab 配置為“通過緩存拉取”。 這也有利於解決 dockerhub 等上游資源的速率限制

在大多數情況下,使用依賴代理應該更快,但不一定如此。 例如,dockerhub 可能比小型自托管服務器性能更高。 GitLab 跑步者相對於注冊表也是遠程的,並且不一定比 Internet 上的任何其他注冊表更“接近” GitLab 注冊表。 所以記住這一點。

附帶說明一下,檢索緩存圖像的絕對最快方法是自行托管 GitLab 跑步者並將圖像直接保存在主機上。 這樣,當作業啟動時,如果主機上已經存在映像,作業將立即啟動,因為它不需要拉取映像(取決於您的拉取配置)。 (也就是說,假設您在圖像中使用image:您的工作聲明)

我正在使用公司 Gitlab 實例,由於某種原因,依賴代理功能已被禁用。 另一個選擇是在本地計算機上創建一個新的 Docker 映像,然后將其推送到您個人 Gitlab 項目的容器注冊表中。

# First create a one-line Dockerfile containing "FROM node:16.3.0-alpine"
docker pull node:16.3.0-alpine
docker build . -t registry.example.com/group/project/image
docker login registry.example.com -u <username> -p <token>
docker push registry.example.com/group/project/image

應根據項目私有 Container Registry 頁面上給出的示例構建圖像標簽。

現在在您的 CI 工作中,您只需將image: node:16.3.0-alpine更改為image: registry.example.com/group/project/image 您可能必須在before_script部分中運行docker login命令(使用部署令牌作為憑據,請參閱設置-> 存儲庫) - 我認為 Gitlab 的較新版本將讓運行程序使用系統憑據對私有容器注冊表進行身份驗證,但這可能會因配置方式而異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM