通過将GitLab Container Registry內建到GitLab中,每個項目都可以擁有自己的空間來存儲其Docker鏡像。
1. 啟用Container Registry
如果在你的項目的側邊欄下找不到 Packages > Container Registry 這個目錄,那麼請聯系管理者。
如果你使用的是GitLab.com,那麼預設情況下此功能是啟用的,是以可以立即開始使用Registry。目前,作為倉庫大小限制的一部分,GitLab.com上的Registry有一個較小的大小限制(10GB)。
為了啟用Container Registry :
- 進入Settings > General頁面
- 展開Visibility, project features, permissions區域,并在項目上啟用Container Registry特性
- 點選Save changes
2. 建構并推送鏡像
假設Registry的URL是registry.example.com,首先你應該登入
docker login registry.example.com
建構和釋出鏡像應該是一個簡單的過程。隻需確定你使用的Registry URL的命名空間和項目名稱是托管再GitLab上:
docker build -t registry.example.com/group/project/image .
docker push registry.example.com/group/project/image
項目命名格式:
<registry URL>/<namespace>/<project>/<image>
GitLab最多支援三級的鏡像倉庫名稱
下面這些鏡像tag命名都是有效的:
registry.example.com/group/project:some-tag
registry.example.com/group/project/image:latest
registry.example.com/group/project/my/image:rc1
3. 使用GitLab Container Registry中的鏡像
docker run [options] registry.example.com/group/project/image [arguments]
4. 使用GitLab CI建構和推送鏡像
GitLab CI/CD 允許你使用Docker Engine來建構和測試基于docker的項目。
持續內建和部署是一種趨勢:
- 建立一個應用鏡像
- 為這個鏡像運作測試
- 推送鏡像到遠端注冊中心
- 将推送的鏡像部署到伺服器上
docker build -t my-image dockerfiles/
docker run my-image /script/to/run/tests
docker tag my-image my-registry:5000/my-image
docker push my-registry:5000/my-image
Register Docker Runner
sudo gitlab-runner register \
--url"https://gitlab.example.com/" \
--registration-token "PROJECT_REGISTRATION_TOKEN" \
--description"docker-ruby:2.6" \
--executor "docker" \
--docker-image ruby:2.6 \
--docker-services postgres:latest \
--docker-services mysql:latest
5. Docs
https://docs.gitlab.com/ee/user/packages/container_registry/index.html
https://docs.gitlab.com/ee/administration/packages/container_registry.html
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html