M1 Mac에서 Docker사용 (feat. Rancher desktop)

Yeonggyoo Jeon·2022년 12월 13일
3

1. M1 맥북프로 교체

최근에 Apple이 Arm아키텍처 기반으로 만든 Apple Silicon을 적용한 M1 MacBook Pro로 개발용 PC를 교체 받았다. 기존에 사용했던 MacBook Pro는 Intel CPU를 사용한 모델이라 M1칩을 적용한 Mac을 사용했을 때, 기존의 개발환경에서와 같은 Hardware Acceleration이 필요한 SDK나 라이브러리 등을 사용하거나 기타 Compiler나 Runtime등의 사용에 문제가 없을지 걱정이 되었다. 하지만 일단 새 노트북을 사용할 수 있고 성능도 뛰어나니 일단 교체를 받고 기분 좋게 개발환경을 하나하나 셋업을 해보았다.

2. Docker사용을 위한 설정

2022년 올해 1월까지 유예기간을 가지고 Docker Desktop이 유료화 되었었다.
(작년에 작성한 "Docker Desktop 유료화와 대응방법" 포스트 참고)
이전까지 Docker Desktop을 사용하는 것이 Mac OS에서 도커를 사용하기 위한 가장 쉽고 확실한 방법이었다. 게다가 무료로 제공되었다. 그 당시에 Mac에서 Docker사용을 위한 여러가지 선택가능한 방법을 고민하다가 기존 개발환경에 설치하여 사용하던 관성과 사용편의성 및 팀의 상황을 고려해 유료인 Team플랜을 구독해 사용해 왔다.
이번에 MacBook을 새로 교체하게 되어 개발환경을 새로 설정하게 되었고 이번에는 Docker Desktop을 구독하여 사용하는 대신에 무료로 Docker를 사용할 수 있는 대안 중에 하나를 선택하여 사용해 보기로 하였다.

3. 실패한 Docker Desktop의 기존 대안들

Minikube + VirtualBox를 사용한 방식

"Docker Desktop 유료화와 대응방법"에서 한번 사용하고 소개했었던 방법으로 시도를 해보았다. 작년에도 내용을 확인하고 이 방법으로 설정 후 테스트도 해보았기 때문에 별다른 준비없이 설치를 시도해볼 수 있었다.

Apple Silicon을 위한 Develop preview?

VitualBox를 Mac에 설치를 시도해보자. 쉘에서 아래의 명령어를 이용해 Brew로 설치도 가능하다.

brew install virtualbox

어!!?? 그런데 아래와 같이 에러메시지가 나온다. 아직은 Intel의 hardware architecture만을 지원하는 것 같다. 조금 당황스러워지는 순간이다.

Error: Cask virtualbox depends on hardware architecture being one of [{:type=>:intel, :bits=>64}], but you are running {:type=>:arm, :bits=>64}.

VirtualBox Download Wiki 페이지에 가보니 Arm64 아키텍처를 사용한 M1/M2 Mac을 위한 Developer preview버전을 다운받아 설치할 수 있었다. 그래서 Develop preview버전으로 VirtualBox설치 후 Minikube까지 설치하고 Docker를 하기 위해 'vm-driver'를 'virtualbox'로 설정하여 Minikube를 구동해보았다.

minikube start --vm-driver=virtualbox --cpus 4 --memory 8192 --disk-size=60g

Minikube가 아직은 미지원

여기서 또 구동이 되지 않는다. 'darwin/arm6' 아키텍처 버전의 minikube가 아직은 'virtualbox' driver를 지원하지 않는 것 같다.

😄  minikube v1.28.0 on Darwin 13.0.1 (arm64)
✨  Using the virtualbox driver based on user configuration
❌  Exiting due to DRV_UNSUPPORTED_OS: The driver 'virtualbox' is not supported on darwin/arm64

그럼 Podman은?

Podman을 사용한 환경구성도 시도해 보았지만 이 역시 아직은 Darwin/arm64 아키텍처의 M1/M2를 지원하지 않아 환경구성이 되지 않는다.

4. Rancher Desktop 발견

아직은 계속 Docker Desktop을 사용해야하나 하고 유료구독 연장 카드를 생각하고 있을 때 Rancher Desktop을 찾을 수 있었다.

Rancher?

Rancher는 여러가지 환경에서 Kubernetes cluster를 배포하고 관리할 수 있는 툴이다. 리눅스 배포판으로 유명했던 Suse에서 만들었고 관리하고 있다. 이 포스트의 목적은 Docker를 사용하는 것이니 Ramcher에 대해서는 더 자세히 알아보지 않는다. Docs사이트에서 Rancher에 대해 좀 더 자세히 확인해 볼 수 있다.

Rancher Desktop에 대해 알아보자

Rancher Desktop은 로컬의 Kubernetes와 Container를 관리할 수 있는 플랫폼을 제공한다. Minikube와 비슷한 것 같지만 Virtual Machine 툴을 별도로 설치할 필요가 없고 GUI도 갖추고 있어 설치 및 사용하기가 좀 더 편한 것 같다.

RancherDesktop

Rancher Desktop은 Container image를 build, push, pull 하는 등의 관리하는 환경을 제공한다. Container engine으로 Moby/dockerd와 containerd를 사용할 수 있는데, 각각 Docker CLI와 nerdctl을 client로 사용하여 컨트롤할 수 있다. 여기서는 익숙산 docker명령어를 사용하기위해 Moby/dockerd를 사용하였다.

Rancher Desktop 설치

https://rancherdesktop.io 에서 OS별로 설치패키지를 다운 받을 수 있다.

Supported OS

Apple Silicon용 패키지를 다운받고 실행
Package of Rancher Desktop

설치를 시작하면 Virtual Machine의 CPU와 Memory 용량을 선택하고 Container Engine의 종류를 선택한다. 설치 시에는 기본으로 그냥 넘어가도 된다. 나중에 'Preferences'에 들어가 이 설정들을 변경할 수 있다.

[Virtual Machine 설정]
Configure virtual machine

[Container Engine 설정]
Choose container engine

Docker CLI와 기타 Docker관련 툴들을 설치해주면 Docker를 사용할 준비가 완료된다.

brew install docker
brew install docker-compose
brew install docker-credential-helper
brew install docker-credential-helper-ecr

이제 Rancher Desktop을 실행하면 Docker를 사용할 준비가 완료된다.
그럼 Docker CLI를 이용해 실행 중인 Container들을 확인해보자! Kubernetes cluster 관리를 위한 컨테이너들이 실행되어 있는 것을 확인할 수 있다.

docker ps

Containers for k8s management

특별히 Kubernetes cluster를 로컬에서 구성하여 사용할 필요가 없다면 'Preference > Kubernetes' 탭에 들어가 'Enable Kubernetes' 체크박스를 해제한 뒤 Apply를 해주면 Service들이 재시작되어 적용이 된다.
Disable kubernetes

다시 'docker ps' 확인해보면 Kubernetes관리를 위해 실행되고 있었던 Container들은 사라져 있을 것이다.

5. 결론

아직은 좀 더 사용해보아야 겠지만 Apple silicon을 사용한 Mac은 물론 다른 플랫폼(Window?)에서도 Docker Container 사용 환경구성을 위한 좋은 대안이 될 것 같다. Minikube나 Podman도 결국엔 Darwin/arm64 아키텍처를 지원하게 될 것으로 생각되지만 현시점에서는 지원하지 않고 Rancher Desktop은 그 대응이 빠르게 가능했던 것 같다. 물론 Docker Desktop이 GUI상에서의 Logging이나 Debugging 그리고 Docker hub와의 연동등 편리한 부가적인 기능이 막강하다. 하지만 특정규모 이상의 회사에 소속되어 사용시 유료구독이라는 부담이 있고 Docker CLI로도 왠만한 기능은 Cli환경에서 다 활용 가능하니 Rancher Desktop의 Container Runtime의 대용으로 사용하는 것도 좋은 선택으로 생각된다. 더불어 Rancher Desktop도 결국엔 유료화 되는 것 아닐까하는 생각이 들수도 있지만 공개된 OpenSource 프로젝트로 관리되고 있고, Multi Cluster관리를 위한 Software스택인 Rancher와는 독립적인 별개의 프로젝트이므로 당분간은 그런 걱정없이 사용할 수 있을 것 같다.

References

  1. https://velog.io/@loganjeon/Docker-Desktop-%EC%9C%A0%EB%A3%8C%ED%99%94%EC%99%80-%EB%8C%80%EC%9D%91%EB%B0%A9%EB%B2%95
  2. https://giljae.com/2022/01/21/%EC%9C%A0%EB%A3%8C%EB%A1%9C-%EC%A0%84%ED%99%98%EB%90%98%EB%8A%94-%EB%8F%84%EC%BB%A4-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91-%EB%8C%80%EC%B2%B4%ED%95%98%EA%B8%B0-(Mac-M1).html
  3. https://rancherdesktop.io/
  4. https://docs.ranchermanager.rancher.io/
  5. https://www.rancher.com/projects
  6. https://github.com/rancher-sandbox/rancher-desktop
  7. https://en.wikipedia.org/wiki/Apple_silicon

0개의 댓글