gitlab有哪些容器

1. gitlab-ce 基础容器

gitlab-ce 是一款基于 Docker、Kubernetes 和 Helm 的开源 Git 仓库管理工具,也是 GitLab 公司主推的产品之一。为方便用户快速部署和管理,GitLab 在其官方仓库中提供了众多基础容器镜像,如 ubuntu、redis、postgres 等。

1.1 ubuntu

ubuntu 是 GitLab 官方提供的操作系统基础容器,在 GitLab 的 CI/CD 管道中,大量使用了 Ubuntu 系列镜像。例如,在一个简单的 CI/CD 管道中,检出代码、安装依赖、执行测试等过程都需要在 Ubuntu 环境中完成。

image: ubuntu:20.04

stages:

- build

- test

build:

stage: build

script:

- apt-get update && apt-get install -y build-essential

- make

test:

stage: test

script: make test

在上面的示例代码中,我们使用了 GitLab 官方提供的 Ubuntu 20.04 镜像来运行一个简单的 CI/CD 管道,其中包括了构建和测试两个阶段。在构建阶段中,我们使用了 apt-get 命令来更新 Ubuntu 自带的软件包索引,并安装了一些必要的软件,如编译器、构建工具等。在测试阶段中,我们则执行了一系列的测试用例。

1.2 redis

在 GitLab 中,redis 主要用于管理用户会话、缓存等数据。因此,在 GitLab 的 CI/CD 管道中,我们通常需要使用 redis 容器来存储和管理这些数据。GitLab 官方提供的 redis 容器已经预先配置好了一些基本选项,如密码、端口等。

services:

- name: redis:latest

alias: redis

variables:

REDIS_URL: redis://redis:6379/0

test:

script:

- echo $REDIS_URL

在上面的示例代码中,我们使用了 GitLab 官方提供的 redis 镜像来运行一个简单的 CI/CD 管道。在管道中,我们通过 services 关键字来启动 redis 容器,并设置了一个别名 redis。接下来,我们设置了一个环境变量 REDIS_URL,其值为 redis://redis:6379/0。最后,我们在测试阶段中,通过 echo 命令输出了环境变量 REDIS_URL 的值。

2. gitlab-ce 拓展容器

除了基础容器外,GitLab 还提供了一些拓展容器,这些容器用于支持 GitLab 的一些高级功能,例如:Docker、Kubernetes 集成、自动化测试等。

2.1 gitlab-runner

GitLab Runner 是一款专门为 GitLab CI/CD 管道设计的容器化执行器。它可以在 GitLab CI/CD 管道中执行任务,并将执行结果提交到 GitLab 中。在 GitLab 官方仓库中,已经预先安装好了 GitLab Runner 的容器镜像。

gitlab-ci-runner:

image: gitlab/gitlab-runner:latest

restart: always

volumes:

- /var/run/docker.sock:/var/run/docker.sock

- /etc/gitlab-runner:/etc/gitlab-runner

environment:

- REGISTER_NON_INTERACTIVE=true

- CI_SERVER_URL=http://gitlab.example.com/

- RUNNER_NAME=my-runner

- RUNNER_EXECUTOR=docker

- DOCKER_IMAGE=alpine:latest

- DOCKER_PRIVILEGED=true

command: register -n --url $CI_SERVER_URL --run-untagged --locked=false --name $RUNNER_NAME --executor $RUNNER_EXECUTOR --docker-image $DOCKER_IMAGE --docker-privileged

在上面的示例代码中,我们使用 GitLab 官方提供的 GitLab Runner 镜像来启动一个 GitLab Runner 的容器实例。在容器启动后,我们向容器中传入了一些必要的环境变量,如 CI_SERVER_URL、RUNNER_NAME 等。此外,我们还将主机中的 Docker 客户端套接字 /var/run/docker.sock 映射到容器中,以便让 GitLab Runner 可以通过 Docker 镜像执行构建任务。最后,我们通过 command 关键字来执行一个 GitLab Runner 的注册命令,以将 Runner 注册到 GitLab 中。

2.2 gitlab-pages

GitLab Pages 是 GitLab 公司推出的一款静态网页托管服务,其允许用户通过 GitLab CI/CD 管道来发布和管理静态网页。GitLab 官方提供了多个 gitlab-pages 容器镜像,以适应不同场景下的需求。

pages:

image: docker:latest

stage: deploy

script:

- docker run -d --name nginx -p 80:80 -v $PWD:/usr/share/nginx/html:ro -v $PWD/docker/nginx.conf:/etc/nginx/nginx.conf:ro nginx:alpine

artifacts:

paths:

- public

only:

- master

在上面的示例代码中,我们使用了 GitLab 官方提供的 docker 镜像来启动一个简单的 GitLab Pages 实例。在容器启动后,我们执行了一段 Docker 命令,来启动一个名为 nginx 的容器实例,并映射宿主机中的静态网页目录 $PWD 到容器中的 /usr/share/nginx/html 目录中。此外,我们还映射了宿主机中的 Nginx 配置文件 $PWD/docker/nginx.conf 到容器中的 /etc/nginx/nginx.conf 文件中。最后,我们通过 only 关键字指定了只有在 master 分支提交代码时才会执行此任务。

3. 总结

本文主要介绍了 GitLab CE 官方提供的基础容器和拓展容器,并通过示例代码详细阐述了容器的使用方法和注意事项。通过使用这些容器,我们可以快速、高效地构建和部署我们的应用程序。