본문으로 건너뛰기

멕에서 docker를 colima로 구동해보기

· 약 7분
gendalf9

22년 1월 경 docker.com이 유료화를 하면서 무료로 제공되던 Docker Desktop이라는 로컬 개발환경에서 docker를 구동하는데 유용하게 사용되는 어플리케이션도 같이 유료 구독자만 사용될 수 있게 변경되었습니다. 지금 회사에서는 결국 docker.com의 라이센스를 구입해서 발급해주는 형식으로 변경되었습니다만, 굳이 라이센스를 구매하지 않고도 맥북의 로컬 개발환경에서 docker를 운용할 수 있는 방법들이 있는데 그 중 하나가 colima를 사용하는 것입니다. 이건 작년에 회사 위키에 작성했던 글을 옮겨오면서 약간의 수정을 했습니다.

Docker는 기본적으로 LXC, 즉 LinuX Container라는 이름만 봐도 Linux라는 OS의 기술로 동작을 합니다.

LXC (LinuX Containers)는 단일 컨트롤 호스트 상에서 여러개의 고립된 리눅스 시스템 (컨테이너)들을 실행하기 위한 운영 시스템 레벨 가상화 방법이다. 리눅스 커널은 cgroups를 절충하여 가상화 머신을 시작할 필요 없이 자원 할당 (CPU, 메모리, 블록 I/O, 네트워크 등)을 한다. Cgroups는 또한 애플리케이션 입장에서 프로세스 트리, 네트워크, 사용자 ID, 마운트된 파일 시스템 등의 운영 환경을 완전히 고립시키기 위해 namespace isolation을 제공한다. LXC는 cgroups와 namespace를 결합하여 애플리케이션을 위한 고립된 환경을 제공한다. Docker 또한 실행 드라이버의 하나로 LXC를 사용할 수 있으며 이를 통해 이미지 관리와 개발 서비스를 제공한다. – 위키피디아

그렇다보니, 원칙적으로는 윈도우나 맥에서 지원이 되지 않는 기술이고, 그래서 예전에는 docker-machine이라는 linux vm을 띄우고 그 안에서 띄운 docker에 윈도우/맥용 docker client가 접속을 해서 사용을 하게 하는 식으로 제공이 되었습니다. 다만 docker-machine은 deprecated 처리되었습니다.

colima는 docker-machine의 대안으로 사용될 수 있는 오픈소스인데, 맥 위에서 최소한의 세팅으로 구동되는 컨테이너 런타임을 표방하고 있습니다. colima라는 이름은 container를 구동하는 lima를 합친 말로 원래 lima라고 하는 경량 linux VM 프로젝트가 있습니다. colima는 이 lima를 기반으로 사용해서 컨테이너 런타임을 돌리는 프로젝트라고 보시면 됩니다.

설치는

# Homebrew
brew install colima

# MacPorts
sudo port install colima

# Nix
nix-env -iA nixpkgs.colima

저는 주로 homebrew를 사용하는데, 사용하는 패키지 매니저에 맞춰서 설치를 하면 됩니다.

VM이 구동하는거기때문에, 일단 start를 별도로 시켜줘야 합니다.

$ colima start
INFO[0000] using docker runtime
INFO[0000] starting colima
INFO[0000] starting ... context=vm
INFO[0020] provisioning ... context=docker
INFO[0020] starting ... context=docker
INFO[0026] waiting for startup to complete ... context=docker
INFO[0026] done

그럼 버전마다 혹은 설정마다 다를 순 있지만, VM을 띄워야 하니 이미지를 받거나 해서 VM을 구동하고 done이라는 표시가 뜨게 됩니다. 그리고 별 문제가 없으면 docker를 실행해서 확인을 해보면

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

$ docker info
Client:
Context: colima
Debug Mode: false

이렇게 docker를 사용할 수 있게 됩니다. info 명령어로 정보를 확인해보면 Context가 colima임이 확인이 됩니다.

colima status 명령어로 colima의 상태를 보면

$ colima status
INFO[0000] colima is running using QEMU
INFO[0000] arch: aarch64
INFO[0000] runtime: docker
INFO[0000] socket: unix:///Users/gendalf9/.colima/default/docker.sock

archaarch64인게 확인이 됩니다. 이건 제가 지금 M1 맥북으로 작업을 해서 기본값이 이런데, lima라는 VM 기반이다보니 이걸 x86_64로 바꿀 수 있습니다. colima start--edit를 추가하면 colima의 VM 설정을 손볼 수 있는데

# Architecture of the virtual machine (x86_64, aarch64, host).
# Default: host
arch: "x86_64"

이렇게 arch쪽 설정을 변경해보거나 혹은 colima start --arch x86_64라고 parameter로 지정을 해주면

$ colima status
INFO[0000] colima is running using QEMU
INFO[0000] arch: x86_64
INFO[0000] runtime: docker
INFO[0000] socket: unix:///Users/gendalf9/.colima/default/docker.sock

이렇게 변경된게 확인이 가능합니다. 그리고 로컬에서 쿠버네티스 구동도 필요하면 colima start --kubernetes 혹은 edit 모드에서

# Kubernetes configuration for the virtual machine.
kubernetes:
# Enable kubernetes.
# Default: false
enabled: true

설정을 바꿔주시면 k3s도 같이 설치해서 로컬 개발환경에서 쿠버네티스 이용까지 가능해집니다.