유료로 전환되는 도커 데스크탑 대체하기 (Mac M1)

 

image

아래 트윗처럼 도커가 가격 정책을 변경했다. Docker Desktop은 기업내에서 더이상 무료가 아니다.

Kubernetes에서 애플리케이션을 실행해야 한다면 데스크탑에 Kubernetes를 설치하는 것이 매우 유용하고 Docker Desktop을 잘 써 왔었다.

이제 도커를 기업에서 사용하려면 구독을 해야하기에 대안을 모색해봤다. 본 글에서는 Docker Desktop 대체제를 조사했고 설치 및 설정에 대해서 다루고자 한다.

Rancher Desktop

Rancher Desktop은 Kubernetes 및 컨테이너 관리를 데스크탑에서 지원하는 오픈 소스 프로젝트이다.

Rancher Desktop은 아래의 기능을 제공한다.

  • Kubernetes 버전 선택 가능
  • Kubernetes를 업그레이드 및 테스트 지원
  • 컨테이너를 실행하고 이미지를 빌드, 푸시 및 가져오기 지원

현재 Lima와 nerdctl은 GUI를 제공하지 않지만, Rancher Desktop은 Electron 기반의 GUI를 제공한다.

image

동작 원리

image

Rancher Desktop은 다른 도구를 매핑하는 방식으로 동작이 된다. MacOS 및 Linux 에서는 가상 머신을 활용하여 컨테이너 및 Kubernetes를 실행한다.

Rancher Desktop 설치

테스트한 환경이 Mac M1이기에 이 기준으로 작성한다.

Rancher Desktop 설치는 간단하다. Github release에 접속해 rancher-desktop-{version}-aarch64.dmg 파일을 다운로드 하고 설치 하면 된다.

설치 후 “Rancher Desktop” 앱을 실행하면, 아래의 화면이 나오고 본인 환경에 맞게 옵션을 선택하면 된다. 아래는 내가 선택한 옵션이다.

Kubernetes 버전 선택

기본적으로 Rancher Desktop은 Kubernetes의 버전을 선택할 수 있다. v1.16부터 원하는 Kubernetes 버전을 선택할 수 있다.

image

위 화면은 Mac용 Rancher Desktop의 Kubernetes 설정 화면이다. 여기서 사용하려는 Kubernetes 버전을 선택할 수 있다. 새 버전을 선택하면 Rancher Desktop은 버전에 필요한 모든 구성 요소를 다운로드하고 로컬 버전을 전환한다.

지원 툴 선택

image

helm, kubectl 및 nerdctl까지 필요한 유틸리티를 체크하면 사용할 수 있도록 설치해준다.

Images

image

k8s.io namespace에 기본적으로 설치되는 Image들이다.

Rancher Desktop 사용

Rancher Desktop이 실행되면 Kubernetes를 사용하는 것과 큰 차이가 없다. 터미널을 열어서 kubectl 명령어를 실행해보자.

giljae@giljae ~ % kubectl get pods --all-namespaces
NAMESPACE     NAME                                     READY   STATUS      RESTARTS        AGE
kube-system   helm-install-traefik-crd--1-vjx5n        0/1     Completed   0               15d
kube-system   helm-install-traefik--1-zrd5f            0/1     Completed   1               15d
kube-system   coredns-85cb69466-rzdnb                  1/1     Running     2 (6m31s ago)   15d
kube-system   svclb-traefik-lwdmn                      2/2     Running     4 (6m31s ago)   15d
kube-system   local-path-provisioner-64ffb68fd-fv9xl   1/1     Running     2 (6m31s ago)   15d
kube-system   metrics-server-9cf544f65-5xcs7           1/1     Running     2 (6m31s ago)   15d
kube-system   traefik-786ff64748-vgszv                 1/1     Running     2 (6m31s ago)   15d
kube-image    builder-t5lbz                            2/2     Running     0               4m4s

Nginx 구동 시키기

nerdctl 명령어를 이용해서 nginx image를 pull한다.

giljae@giljae ~ % nerdctl pull nginx
docker.io/library/nginx:latest:                                                   resolved       |++++++++++++++++++++++++++++++++++++++|
index-sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31:    exists         |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:50ab7908620ee92646ddcd9fe321f969cdff672819fd9c8427448f67f59ef32e: done           |++++++++++++++++++++++++++++++++++++++|
config-sha256:eeb9db34b33190cac170b27d857e9b23511d396a2609c1a54e93025634afed0a:   done           |++++++++++++++++++++++++++++++++++++++|
elapsed: 2.1 s                                                                    total:   0.0 B (0.0 B/s)

image가 존재하는지 확인해본다.

giljae@giljae ~ % nerdctl images nginx
REPOSITORY    TAG       IMAGE ID        CREATED          PLATFORM          SIZE
nginx         latest    0d17b565c37b    4 minutes ago    linux/arm64/v8    142.4 MiB

command외에 rancher desktop app의 Images에서도 확인이 가능하다. image

이제 Nginx를 구동 시켜보자. 간단하게 테스트 할 목적으로 daemon으로 구동하진 않았다.

giljae@giljae ~ % nerdctl run -p 8000:80 nginx

브라우저에서 확인해보자. (http://127.0.0.1:8000) image

Rancher Desktop에 대한 자세한 내용은 여기를 참조하자.

잠깐, 글이 유익했나요?

Buy Me A Coffee