GitLab 已经通过 Docker Compose 部署好了,GitLab Runner也使用相同方式镜像部署,方便后期维护更新,以及版本管理,以及遇到版本漏洞的时候可以统一进行升级操作。
注意:gitlab runner版本应与gitlab版本保持统一。
一、创建Runner 数据目录
mkdir -p /datah/gitlab-runner/configchmod -R a+w /datah/gitlab-runner/
二、查询GitLab Runner的镜像并推送到私有仓库
Skopeo查询镜像版本(小技巧)
2.1、查询镜像GitLab Runner镜像
skopeo list-tags docker://docker.io/gitlab/gitlab-runner | jq -r '.Tags[]' | grep -v '^latest

| sort -Vr
| more

2.2、选择和gitlab相同版本的gitlab-runner并推送到私有仓库skopeo copy --dest-creds admin:Harbor12345 --dest-tls-verify=false docker://docker.io/gitlab/gitlab-runner:v19.0.1 docker://192.168.1.20/gitlab/gitlab-runner:v19.0.1 | sort -Vr | more
2.2、选择和gitlab相同版本的gitlab-runner并推送到私有仓库
skopeo copy --dest-creds admin:Harbor12345
--dest-tls-verify=false docker://docker.io/gitlab/gitlab-runner:v19.0.1
docker://192.168.1.20/gitlab/gitlab-runner:v19.0.1



192.168.1.20/gitlab/gitlab-runner:v19.0.1
GitLab Runner 不分社区版(CE)和企业版(EE),只有一个统一的开源版本。
四、下载JDK和Maven到数据目录(构建java项目需要)
不管使用shell ,还是docker 都没有影响这样做。
cd /homewget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz
mkdir -p /datah/gitlab-runner/jdk17tar -zxvf jdk-17.0.12_linux-x64_bin.tar.gz --strip-components=1 -C /datah/gitlab-runner/jdk17
wget https://dlcdn.apache.org/maven/maven-3/3.9.16/binaries/apache-maven-3.9.16-bin.tar.gz
mkdir -p /datah/gitlab-runner/maventar -zxvf apache-maven-3.9.16-bin.tar.gz --strip-components=1 -C /datah/gitlab-runner/maven/
maven 具体 settings.xml 配置参考:Apache Maven 安装 (Linux)
五、下载node到数据目录 (构建前端项目 + 部分后端项目需要)
cd /home/wget https://nodejs.org/download/release/v24.14.1/node-v24.14.1-linux-x64.tar.gz
mkdir -p /datah/gitlab-runner/nodejs/tar -zxvf node-v24.14.1-linux-x64.tar.gz --strip-components=1 -C /datah/gitlab
六、下载go到数据目录 (构建 Go 项目需要)
cd /home/wget https://go.dev/dl/go1.26.2.linux-amd64.tar.gz
mkdir -p /datah/gitlab-runner/go/tar -zxvf go1.26.2.linux-amd64.tar.gz --strip-components=1 -C /datah/gitlab-runner/go/

mkdir -p /datah/gitlab-runner/kubectlv1351
tree -d -L 2

chmod -R a+w /datah/gitlab-runner/
七、创建 GitLab Runner 的yml
cat > /usr/local/docker/gitlab/docker-compose-runner.yml <<'EOF'services: gitlab-runner: image: 192.168.1.20/gitlab/gitlab-runner:v19.0.1 container_name: gitlab-runner hostname: '192.168.1.50' volumes: - /datah/gitlab-runner/config:/etc/gitlab-runner:rw # runner注册信息、config.toml存在宿主机,删容器配置不丢失 - /var/run/docker.sock:/var/run/docker.sock # 挂载宿主机docker套接字:流水线内可以执行docker build、push(DinD模式) - /usr/local/bin/docker:/usr/bin/docker # 将宿主机二进制文件挂载到容器内部 - /datah/gitlab-runner/kubectlv1351/kubectl:/usr/local/bin/kubectl:x #挂载kubectl到容器的系统PATH目录 - /datah/gitlab-runner/jdk17:/usr/local/jdk17 # 将宿主机上的 jdk17 挂载到容器内部 - /datah/gitlab-runner/maven:/usr/local/maven # 将宿主机上的 Maven 挂载到容器内部 - /datah/gitlab-runner/go:/usr/local/go # 将宿主机上的 golang 挂载到容器内部 - /datah/gitlab-runner/nodejs:/usr/local/nodejs # nodejs宿主机目录挂载容器 environment: - JAVA_HOME=/usr/local/jdk17 - MAVEN_HOME=/usr/local/maven - NODE_HOME=/usr/local/nodejs - PATH=$PATH:/usr/local/jdk17/bin:/usr/local/maven/bin:/usr/local/go/bin:/usr/local/nodejs/bin - GOPATH=$HOME/go - GOROOT=/usr/local/go - TZ=Asia/Shanghai restart: always privileged: true user: "root"EOF

八、启动 GitLab Runner
cd /usr/local/docker/gitlabdocker-compose -f docker-compose-runner.yml pulldocker-compose -f docker-compose-runner.yml up -d
查看启动日志:
docker logs gitlab-runner -f

ERROR: Failed to load config stat /etc/gitlab-runner/config.toml:no such file or directory
[root@gitlab gitlab]# docker exec -it gitlab-runner gitlab-runner listRuntime platform arch=amd64 os=linux pid=17 revision=c2831b75 version=19.0.1Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml[root@gitlab gitlab]# docker exec -it gitlab-runner ls -al /etc/gitlab-runnertotal 12drwxrwxrwx 2 root root 4096 Jun 5 00:22 .drwxr-xr-x 1 root root 4096 Jun 5 00:22 ..-rw------- 1 root root 14 Jun 5 00:22 .runner_system_id[root@gitlab gitlab]#
说明 Runner 容器启动成功了,但是还没有注册过 Runner,所以不存在:/etc/gitlab-runner/config.toml。这不是权限问题,也不是 Docker 挂载问题,而是Runner 尚未注册。
九、挂载的软件的版本查询
docker exec -it gitlab-runner node -v
docker exec -it gitlab-runner npm -v
docker exec -it gitlab-runner java -version
docker exec -it gitlab-runner mvn -v
docker exec -it gitlab-runner go version

下一条:gitlab上传项目
品质保证
多年的生产力软件专家
专业实力
资深技术支持项目实施团队
安全无忧
多位认证安全工程师
多元服务
软件提供方案整合,项目咨询实施
购软平台-找企业级软件,上购软平台。平台提供更齐全的软件产品、更专业的技术服务,同时提供行业资讯、软件使用教程和技巧。购软平台打造企业级数字产品综合应用服务平台。用户体验和数字类产品的专业化服务是我们不断追求的目标。购软平台您身边的企业级数字产品优秀服务商。
沪公网安备31011302006932号