拉取镜像

1
docker pull gitlab/gitlab-runner:latest

创建挂载目录

1
mkdir -p /opt/gitlab-runner/config

启动容器

1
docker run -d --name gitlab-runner --restart always -v /opt/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

进入runner容器,注册到gitlab上

汇总操作命令:

1
2
3
4
5
6
7
8
9
10
11
docker exec -it gitlab-runner  gitlab-runner register -n \
--url http://192.168.0.253:8090 \
--registration-token tyXBwC8frbShS4yn3nE5 \ # token需要根据实际情况进行修改
--tag-list=dockersock,docker \
--description "dockersock" \
--docker-privileged=true \
--docker-pull-policy="if-not-present" \
--docker-image "docker:latest" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes /root/m2:/root/.m2 \
--executor docker

分步操作命令:

进入容器

1
docker exec -it gitlab-runner /bin/bash

运行以下注册命令

1
gitlab-runner register

输入Gitlab实例的地址

1
2
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
http://192.168.0.253:8090 # 端口采用默认的80,否则需要加上端口,比如 http://192.168.0.253:8090

输入token

1
2
3
4
Please enter the gitlab-ci token for this runner
tyXBwC8frbShS4yn3nE5
如何获取token
进入到项目中的设置,找到CI/CD,Runner ,图片这个token仅供途径展示

输入Runner的描述,后期可以手动修改

1
2
Please enter the gitlab-ci description for this runner
[hostname] my-runner

输入与Runner关联的标签,后期可以手动修改

1
2
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag

输入Ruuner的执行者

1
2
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

如果上面执行者为docker,需要你在后续项目根部的.gitlab-ci.yml中指定docker版本

1
2
3
Please enter the Docker image (eg. ruby:2.1):
alpine:latest
通过以上命令后,就可以在gitlab中查看到了这个刚刚创建的runner

runner注册完毕之后,还需要修改一下runner的配置文件,实现runner与宿主机的数据挂载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
vim /opt/gitlab-runner/config/config.toml # 开头创建的宿主机挂载目录

concurrent = 1
check_interval = 0

[session_server]
session_timeout = 1800

[[runners]]
name = "my-runner"
url = "http://192.168.0.253:8090"
token = "tyXBwC8frbShS4yn3nE5"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "alpine:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock"]
shm_size = 0

原先是volumes = [“/cache”]
上面的volumes数组中添加docker的挂载,加快项目的构建速度。

最后,只需要再重启runner容器即可:

1
docker restart gitlab-runner

说明:
1.不同的项目可以使用不同的gitlab-runner,根据实际情况再运行一个名称不一样的容器,并根据新项目的token注册就行了。
2.不同的项目还可以使用同一个gitlab-runner,只需要在注册的时候使用不同项目下的token就行了。