1. 시작하며
많은 MacOS 개발자에게 Docker Desktop 환경에서 Docker를 사용해 왔습니다. 그러나 기업 사용자를 대상으로 유료화 정책을 발표하였습니다. 제작년부터 비용 효율화 측면에서 전사적으로 Docker Desktop이 아닌 다른 방법으로 사용하도록 가이드가 되었습니다.
라이선스 비용 문제를 해결하고, 더 효율적인 개발 환경을 구축하기 위한 대안을 모색하던 중, Colima를 도입하였습니다.
2. Colima란 무엇인가?
Colima는 macOS에서 컨테이너를 실행하기 위한 최소한의 환경을 제공하는 오픈소스 도구입니다. 가벼운 리눅스 가상 머신(VM)을 기반으로 Docker 컨테이너 런타임을 제공하며, Docker Desktop의 핵심 기능을 대체할 수 있습니다.
macOS에는 컨테이너 기술의 기반이 되는 리눅스 커널이 없기 때문에, Colima는 lima (Linux on Mac)라는 기술을 사용하여 작고 빠른 리눅스 VM을 생성하고 그 위에서 Docker 환경을 구동합니다.
3. Colima 특징 및 장점
Docker Desktop의 훌륭한 대안으로 Colima를 선택하게 된 이유는 다음과 같습니다.
무료 오픈소스
개인은 물론 기업 사용자까지 라이선스 비용 걱정 없이 자유롭게 사용할 수 있어, 유료화 정책의 완벽한 해결책이 됩니다.
가볍고 빠른 성능
CLI명령줄 인터페이스 기반으로 동작하여 Docker Desktop에 비해 메모리와 CPU 점유율이 현저히 낮습니다.
완벽한 Docker CLI 호환성
기존에 사용하던 docker build, docker run, docker-compose 등 모든 Docker CLI 명령어를 아무런 변경 없이 그대로 사용할 수 있습니다.
Apple Silicon 완벽 지원
Apple Silicon (M1/M2/M3..) 칩셋이 탑재된 최신 Mac 환경에서도 안정적으로 동작합니다.
간단한 사용법과 유연성
colima start, colima stop 같은 몇 가지 간단한 명령어로 가상 환경을 쉽게 관리할 수 있습니다.
Docker뿐만 아니라 Containerd와 같은 다른 컨테이너 런타임도 지원합니다.
4. Docker Desktop 삭제
Docker Desktop이 설치된 상태에서 Docker Desktop을 종료하고 Colima를 실행하면 credential 문제가 있어서 Docker Desktop을 제거하고 Colima를 설치하였습니다.
Docker Desktop → Preference → Troubleshoot → Uninstall Docker Desktop 에서 Uninstall 클릭하여 제거해줍시다.
5. Colima 설치
qemu와 colima를 설치합시다. qemu를 설치하지 않은 상태에서 colima를 실행하려면 실행하라고 알림이 나옵니다.
$ brew install qemu
$ brew install colima
혹시 도커를 설치하지 않았다면 docker를 설치해 줍시다.
$ brew install docker
6. Colima 사용법
Colima 실행
Colima 실행
$ colima start Colima 실행 상태 확인
$ colima status
>>
INFO[0000] colima is running using QEMU
INFO[0000] arch: aarch64
INFO[0000] runtime: docker
INFO[0000] mountType: sshfs
INFO[0000] socket: unix:///Users/user/.colima/default/docker.sockColima 중지
$ colima stop
Colima 환경 삭제
$ colima delete
MacBook 재시작시 colima를 자동 실행 시킬 수 있습니다.
brew services start colima
사용중에 credential 문제가 있으면 현재 도커를 로그아웃하고 재로그인해 줍시다.
$ docker logout
$ docker login
7. Colima 옵션
Colima는 colima start 명령어만으로도 동작하지만, 몇 가지 옵션을 추가하면 훨씬 더 강력하고 개인화된 개발 환경을 구축할 수 있습니다.
colima start \
--profile default \
--activate \
--arch aarch64 \
--cpu 4 \
--memory 8 \
--disk 40 \
--mount ${HOME}:w \
--mount-inotify \
--ssh-agent \
--vm-type vz \
--vz-rosetta \
--verbose
기본 설정
--profile default
Colima는 여러 개의 가상 머신(프로필)을 동시에 관리할 수 있습니다. 이 옵션은 default라는 이름의 프로필을 생성하고 시작하겠다는 의미입니다.
--activate
Colima 가상 머신이 시작된 후, Docker 컨텍스트를 해당 프로필로 자동으로 활성화(전환)합니다. 이 옵션으로 별도의 docker context use colima 명령어 없이 바로 docker 명령어를 사용할 수 있습니다.
리소스 할당
--arch aarch64
가상 머신의 아키텍처를 지정합니다. aarch64는 Apple Silicon (M1/M2/M3 등)을 위한 설정입니다. (인텔 Mac의 경우 x86_64)
--cpu 4
가상 머신에 할당할 CPU 코어 수를 4개로 설정합니다.
--memory 8
가상 머신에 할당할 메모리를 8GB로 설정합니다.
--disk 40
가상 머신이 사용할 디스크의 최대 크기를 40GB로 설정합니다.
파일 시스템 연동
--mount ${HOME}:w:
macOS의 홈 디렉터리(~)를 가상 머신 내부에 읽고 쓰기 가능한(w) 상태로 마운트합니다. 이를 통해 컨테이너에서 macOS의 파일에 직접 접근할 수 있어 매우 편리합니다.
--mount-inotify
마운트된 디렉터리에서 파일 변경이 발생했을 때, 이를 감지하는 inotify 이벤트를 활성화합니다. Next.js, Vite 등 Hot-Reloading 기능이 있는 프레임워크를 사용할 때 필수적인 옵션입니다.
고급 기능
--ssh-agent
macOS의 SSH Agent를 가상 머신과 공유합니다. 이를 통해 컨테이너 내부에서 git clone 등 SSH 키가 필요한 작업을 별도의 키 복사 없이 수행할 수 있습니다.
--vm-type vz
가상화 프레임워크로 macOS에 내장된 고성능 Virtualization.framework를 사용하도록 지정합니다. (Apple Silicon 전용)
--vz-rosetta
vz 타입 VM에서 Rosetta 2를 활성화합니다. 이를 통해 aarch64 아키텍처의 가상 머신에서도 x86_64 아키텍처의 도커 이미지를 실행할 수 있습니다.
--verbose
Colima가 시작되는 동안 상세한 로그를 출력합니다. 문제가 발생했을 때 원인을 파악하는 데 도움이 됩니다.
8. 마치며
Colima로의 전환은 단순히 비용을 절감하는 것을 넘어, 더 가볍고 효율적인 개발 환경을 구축하는 계기가 되었습니다.
Docker Desktop 유료화로 인해 대안을 찾고 있는 macOS 개발자라면, Colima는 가장 먼저 고려해야 할 선택지입니다.
각자의 개발 환경에 맞는 도구를 잘 선택하시기를 바라겠습니다^^
<><
'Computer Science > DevOps' 카테고리의 다른 글
| nginx 에러 invalid PID number "" in "/usr/local/Cellar/nginx/1.21.3/logs/nginx.pid" (4) | 2022.01.31 |
|---|---|
| nginx 에러 open() "/nginx/1.21.3/logs/nginx.pid" failed (2: No such file or directory) 해결 (0) | 2022.01.31 |
| Redis 데이터 한번에 삭제하기 (0) | 2022.01.30 |
| Github CLI 시작하기 (gh pr) (2) | 2020.09.19 |
| Github CLI 시작하기 (gh issue) (0) | 2020.09.19 |