본문 바로가기

리눅스

[draft] Docker Compose로 GitLab Runner 설치 및 실행하기

Docker Compose로 GitLab Runner 설치 및 실행하기

GitLab Runner 설치 디렉터리 생성

mkdir gitlab-runner
cd gitlab-runner

docker-compose.yml 작성

cat <<EOF > docker-compose.yml
version: '3.8'
services:

  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    restart: unless-stopped
    container_name: gitlab-runner
    hostname: gitlab-runner
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - ./config:/etc/gitlab-runner
EOF

설정 설명

  • gitlab/gitlab-runner:latest → GitLab Runner 공식 이미지
  • /var/run/docker.sock → Docker executor 사용을 위한 필수 설정
  • ./config:/etc/gitlab-runner → Runner 설정(config.toml) 영구 보존

GitLab Runner 컨테이너 실행

Docker Compose를 이용해 GitLab Runner 컨테이너를 실행합니다.

docker-compose up -d
[+] Running 4/4
 ⠿ gitlab-runner Pulled                             64.9s
   ⠿ 4d32b49e2995 Pull complete                     12.3s
   ⠿ 617ef4a56299 Pull complete                     58.4s
   ⠿ 797d26c5d28d Pull complete                     58.8s
[+] Running 2/2
 ⠿ Network docker-gitlab-runner_default  Created     0.4s
 ⠿ Container gitlab-runner               Started    13.6s

컨테이너 상태 확인

docker-compose ps
NAME           COMMAND                  SERVICE          STATUS     PORTS
gitlab-runner  "/usr/bin/dumb-init …"   gitlab-runner    running

GitLab Runner 등록(Register)

GitLab에서 Runner 토큰 확인

  • 프로젝트 > 설정 > CI/CD > Runners 섹션

Runners

Runner 컨테이너 접속

docker-compose exec gitlab-runner bash

gitlab-runner register 실행

  • 컨테이너 내부에서 Runner 등록을 진행합니다.
gitlab-runner register
Runtime platform        arch=amd64 os=linux pid=25 revision=bd40e3da version=14.9.1
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.scbyun.com/
Enter the registration token:
GxxxxxxxxxxxxxxxxxxxxxxxxxxxN
Enter a description for the runner:
[acd54bbc5de3]: runner01
Enter tags for the runner (comma-separated):
runner
Registering runner... succeeded        runner=GR134894
Enter an executor: custom, docker, docker-ssh, parallels, kubernetes, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
docker
Enter the default Docker image (for example, ruby:2.7):
alpine:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Runner 설정 파일 확인

Runner 등록 후 config.toml 파일이 자동 생성됩니다.

cat config/config.toml
concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "runner01"
  url = "https://gitlab.scbyun.com/"
  token = "bRCWvXqMVcR6KWUFp-Sr"
  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"]
    shm_size = 0

설정 설명

  • executor = "docker" → Docker 기반 CI 실행
  • image = "alpine:latest" → CI Job 기본 이미지
  • volumes = ["/cache"] → CI 캐시 디렉터리

GitLab UI에서 Runner 상태 확인

GitLab 프로젝트의 CI/CD > Runners 메뉴에서 등록한 Runner가 Active 상태로 표시되면 정상적으로 연결된 것입니다.

Runner

마무리

이제 GitLab Runner가 정상적으로 구성되었으며 .gitlab-ci.yml 파일을 통해 CI/CD 파이프라인을 실행할 수 있습니다.

  • Docker-in-Docker(privileged = true) 설정
  • 특정 프로젝트 전용 Runner 구성
  • 태그 기반 Runner 분리 운영

등을 확장해 볼 수 있습니다.