一、gitlab container registry 

gitlab container registry 中 集成了docker registry,做的一个docker images管理工具,可以在gitlab页面来管理docker的images镜像,可以说是很实用的一个功能。

二、docker registry 的安装

这里使用docker 安装,并且对外的端口设置为5300

docker run -d --name registry --restart=always  -p 5300:5000 -v /registry:/var/lib/registry registry:2

验证是否安装正确,输入ip:端口/v2可以得到返回,就说明registry启动完成

 三、配置gitlab支持container registry

默认gitlab是没有开启container registry的功能的,需要修改配置文件/ect/gitlib/gitlab.rb文件

#registry服务的ip和端口
registry_external_url "http://192.168.xx.xx:5300"
#这里一定要加上,不然页面中没有数据,他会从localhost:5000去找数据,页面上就什么都没有
gitlab_rails['registry_api_url'] = "http://192.168.xx.xx:5300"
#支持registry
gitlab_rails['registry_enabled'] = true

页面的效果

四、使用gitlab-ci上传image

1.创建一个ci-registry项目

2.编写Dockerfile文件

FROM primetoninc/jdk:1.8
MAINTAINER   axiba@qq.com
ADD target/ci-registry.jar app.jar
EXPOSE 8989
ENTRYPOINT ["java","-jar","/app.jar"]

 3.编写.gitlab-ci.yml文件

写了三个阶段的,test,build,push

test job做了简单的打印

build job使用maven打包

push job使用docker命令构建镜像,并将镜像push到registry中,这里注意需要登录,而用的登录名就是当前的gitlab的用户名。

variables:
  CI_DOCKER_CONTAINER: ci-registry
  DOCKER_REGISTRY: "192.168.xx.xx:5300"
  CI_DOCKER_PORT: 8989
  CI_DOCKER_VERSION: '0.1'
  CI_NAMESPACE: root
  CI_DOCKER_IMAGE: ci-registry

stages:
  - test
  - build
  - push

test:job:
  stage: test
  script:
    - echo "test job start"

build:job:
  image: maven:3.3.9-jdk-8
  stage: build
  script:
    - echo "build job start"
    - mvn clean package -Dmaven.test.skip=true
    - echo "install success"
  artifacts:
    paths:
      - target/ci-registry.jar
    when: on_success
  only:
    - master
  tags:
    - register

push:job:
  stage: push
  image: docker:latest
  script:
    - docker images |grep  $DOCKER_REGISTRY/$CI_NAMESPACE/$CI_DOCKER_IMAGE:$CI_DOCKER_VERSION && docker rmi -f $DOCKER_REGISTRY/$CI_NAMESPACE/$CI_DOCKER_IMAGE:$CI_DOCKER_VERSION || echo  "not exist"
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build -t $DOCKER_REGISTRY/$CI_NAMESPACE/$CI_DOCKER_IMAGE:$CI_DOCKER_VERSION  .
    - docker push $DOCKER_REGISTRY/$CI_NAMESPACE/2/s/x/x/x/$CI_DOCKER_IMAGE:$CI_DOCKER_VERSION
  only:
    - master
  tags:
    - register

4.提交到gitlab,查看结果

 查看registry中是否有数据,输入http://ip:5300/v2/root/ci-registry/tags/list

 查看gitlab container registry 中是否有数据

 五、不用gitlab-ci发布registry

1.将jar包和Dockerfile放在同一目录下

2.登录registry

docker login 192.168.xx.xx:5300

3.使用docker build命令打包image

 docker build -t 192.168.xx.xx:5300/root/ci-registry:0.2  .

 4.推送镜像到docker registry

docker push 192.168.xx.xx:5300/root/ci-registry:0.2

 5.查看结果

显示两个tag

好了,这个搞定了,也挺简单的,虽然我搞了两天。哈哈

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐