通过将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