Linux용 호스티드 러너
Linux용 호스티드 러너 (Hosted runners on Linux)
GitLab.com의 Linux용 호스티드 러너는 Google Cloud Compute Engine 위에서 동작해요. 각 잡(job)은 완전히 격리된 임시(ephemeral) 가상 머신(VM) 하나를 받는데, 기본 리전은 us-east1이에요. 즉 매번 깨끗한 환경에서 빌드가 시작되는 거죠.
각 VM은 Google의 Container-Optimized OS(COS)와 최신 Docker Engine을 쓰고, docker+machine executor로 실행돼요. 머신 타입이나 프로세서 종류는 바뀔 수 있으니, 특정 프로세서 설계에 최적화된 잡은 결과가 일관되지 않을 수 있다는 점만 알아두면 좋아요.
출처: 문서
본문
Untagged 잡은 기본 small Linux x86-64 러너에서 실행돼요.
Linux x86-64에서 사용 가능한 머신 타입
GitLab은 Linux x86-64 호스티드 러너에 대해 다음과 같은 머신 타입을 제공해요.
| Runner Tag | vCPUs | Memory | Storage |
|---|---|---|---|
saas-linux-small-amd64 (default) |
2 | 8 GB | 30 GB |
saas-linux-medium-amd64 |
4 | 16 GB | 50 GB |
saas-linux-large-amd64 (Premium and Ultimate only) |
8 | 32 GB | 100 GB |
saas-linux-xlarge-amd64 (Premium and Ultimate only) |
16 | 64 GB | 200 GB |
saas-linux-2xlarge-amd64 (Premium and Ultimate only) |
32 | 128 GB | 200 GB |
Linux Arm64에서 사용 가능한 머신 타입
GitLab은 Linux Arm64 호스티드 러너에 대해 다음과 같은 머신 타입을 제공해요.
| Runner Tag | vCPUs | Memory | Storage |
|---|---|---|---|
saas-linux-small-arm64 |
2 | 8 GB | 30 GB |
saas-linux-medium-arm64 (Premium and Ultimate only) |
4 | 16 GB | 50 GB |
saas-linux-large-arm64 (Premium and Ultimate only) |
8 | 32 GB | 100 GB |
Linux Arm 호스티드 러너에서 Docker-in-Docker를 사용하면 네트워크 연결 문제가 생길 수 있어요. 이 문제는 Google Cloud의 최대 전송 단위(MTU) 값과 Docker의 값이 일치하지 않을 때 발생해요. 해결하려면 클라이언트 쪽 Docker 설정에
--mtu=1400을 넣어주세요. 자세한 내용은 issue 473739를 참고하세요.
컨테이너 이미지
Linux 러너는 docker+machine executor를 사용하므로, .gitlab-ci.yml 파일에서 image를 정의해서 어떤 컨테이너 이미지든 고를 수 있어요. 선택한 Docker 이미지가 프로세서 아키텍처와 호환되는지만 확인하면 돼요.
이미지를 설정하지 않으면 기본값은 ruby:3.1이에요.
Docker-in-Docker 지원
saas-linux-<size>-<architecture> 태그가 붙은 러너는 Docker-in-Docker를 지원하도록 privileged 모드로 실행돼요. 이 러너를 쓰면 격리된 잡 안에서 Docker 이미지를 네이티브하게 빌드하거나 여러 컨테이너를 실행할 수 있어요.
gitlab-org 태그가 붙은 러너는 privileged 모드로 동작하지 않으므로 Docker-in-Docker 빌드에는 쓸 수 없어요.
예제 .gitlab-ci.yml 파일
small이 아닌 다른 머신 타입을 쓰려면 잡에 tags: 키워드를 추가하면 돼요. 예를 들면:
job_small:
script:
- echo "This job is untagged and runs on the default small Linux x86-64 instance"
job_medium:
tags:
- saas-linux-medium-amd64
script:
- echo "This job runs on the medium Linux x86-64 instance"
job_large:
tags:
- saas-linux-large-arm64
script:
- echo "This job runs on the large Linux Arm64 instance"
더 알아보기
호스티드 러너는 리눅스뿐 아니라 macOS, Windows에도 있어요. 각 러너의 머신 타입과 이미지 설정을 보고 내 프로젝트에 가장 맞는 러너를 골라보세요. Docker-in-Docker 문서를 함께 보면 컨테이너 빌드 파이프라인을 구성하는 데 도움이 돼요.