컨테이너 안에서 컨테이너 빌드
Hosted runner 는 Docker 미리 설치. Self-hosted, 특히 runner 자체 컨테이너화 시 runner 안에서 Docker 명령 돌리는 전략 필요.
세 패턴
- 호스트 Docker socket 마운트 —
/var/run/docker.sock을 runner 에. 가장 쉬움. 안전 안 함: job 이 host 로 탈출 가능. - Docker-in-Docker (dind) — runner 안에 별도 Docker daemon 실행. 더 안전; 더 느림;
--privileged또는 rootless dind 필요. - Buildkit 단독 — image 빌드만이면 Buildkit 이 dockerd 없이 실행 가능. 슬림 + 빠름.
권장
- 신뢰 코드: socket 마운트 OK, 쉽고 빠름.
- 신뢰 안 되는 코드: rootless dind 또는 Kaniko/Buildkit.
- Apple Silicon: Mac 의 Docker Desktop 이 daemon 처리; runner agent 가 정상 대화.