Post

Orbstack

새로운 macOS용 가상화 도구

OrbStack이란?

OrbStack은 Docker 컨테이너와 Linux 가상 머신을 실행할 수 있는 macOS 전용 초고속, 초경량 가상화 도구입니다. Docker Desktop의 강력한 대체재로 떠오르고 있으며, 특히 성능과 리소스 사용량에 민감한 개발자들에게 큰 호응을 얻고 있습니다.

핵심은 macOS 네이티브 기술(Swift, Virtualization.framework 등)을 적극적으로 활용하여 매우 가볍고 빠르다는 점입니다. 단순히 컨테이너를 넘어 완전한 Linux 배포판도 순식간에 실행할 수 있는 강력한 기능을 제공합니다.

OrbStack vs Docker Desktop

두 도구의 차이점을 한눈에 파악할 수 있도록 표로 정리했습니다.

항목OrbStackDocker Desktop
주요 대상 OSmacOS 전용macOS, Windows, Linux
아키텍처경량화된 커스텀 하이퍼바이저, macOS 네이티브 기술무거운 VM (HyperKit, Virtualization.framework, WSL2)
성능 (시작 속도)매우 빠름 (약 2초)상대적으로 느림 (수십 초 이상 소요될 수 있음)
리소스 사용량매우 낮음 (낮은 CPU 점유율, 적은 메모리 사용)높음 (상시 높은 CPU 및 메모리 점유)
주요 기능Docker 컨테이너, Linux 가상 머신, KubernetesDocker 컨테이너, Dev Environments, Extensions, Kubernetes
네트워크/파일 I/O최적화된 네이티브 구현으로 매우 빠름상대적으로 느리며, 특히 파일 I/O에서 병목 현상 발생
UISwift 기반의 네이티브 macOS 앱Electron 기반의 크로스플랫폼 앱
라이선스개인 무료, 팀/기업용 유료(Pro)개인/소규모 무료, 중/대규모 기업 유료

상세 비교

OrbStack이 docker desktop에 비해 뛰어난 점을 설명합니다.

아키텍처 및 성능

  • OrbStack: Swift로 작성된 네이티브 macOS 앱이며, Apple의 Virtualization.framework를 기반으로 한 매우 가벼운 가상화 레이어를 사용합니다. 네트워크 스택과 파일 시스템(VirtioFS)이 macOS에 깊게 통합되어 있어 Docker Desktop 대비 월등한 성능을 보여줍니다. 특히 컨테이너 시작, 파일 공유, 네트워크 통신 속도가 체감될 정도로 빠릅니다.
  • Docker Desktop: 전통적으로 무거운 가상 머신 위에서 Docker 엔진을 실행하는 방식이었습니다. 최근에는 macOS의 기술을 도입했지만, 여전히 OrbStack만큼 네이티브 환경에 최적화되지는 않아 상대적으로 무겁고 느립니다.

리소스 사용량

이것이 OrbStack을 선택하는 가장 큰 이유 중 하나입니다.

  • OrbStack: 유휴 상태(idle)에서 거의 CPU를 사용하지 않으며, 메모리 사용량도 매우 적습니다. 노트북의 배터리 수명과 팬 소음에 직접적인 영향을 미치는 부분으로, M1/M2/M3 계열의 Apple Silicon Mac에서 특히 그 차이가 두드러집니다.
  • Docker Desktop: 백그라운드에서 상시 실행되는 프로세스들이 많아 상당한 CPU와 메모리를 점유하는 경우가 많습니다. 여러 컨테이너를 실행하면 시스템 전체가 느려지는 경험을 하셨을 겁니다.

Linux 가상 머신 지원

  • OrbStack: Docker 컨테이너뿐만 아니라, 완전한 Linux 가상 머신을 몇 초 만에 생성하고 실행할 수 있습니다. orb launch ubuntu 같은 간단한 명령어로 Ubuntu, Debian, CentOS 등 다양한 배포판을 즉시 사용할 수 있습니다. 이는 컨테이너 환경만으로는 부족했던 복잡한 테스트나 개발 환경을 구축할 때 매우 유용합니다.
  • Docker Desktop: 주된 기능은 컨테이너 관리입니다. 비슷한 경험을 제공하는 Dev Environments 기능이 있지만, OrbStack처럼 가볍고 빠르게 완전한 OS 환경을 제공하는 것과는 차이가 있습니다.

사용 편의성 및 UI

  • OrbStack: macOS의 디자인 가이드라인을 따르는 네이ティブ UI를 제공하여 매우 직관적이고 반응성이 뛰어납니다. 시스템 메뉴 막대 아이콘을 통해 모든 것을 간단하게 제어할 수 있습니다.
  • Docker Desktop: Electron으로 만들어져 여러 OS에서 동일한 경험을 제공하지만, macOS 네이티브 앱만큼의 부드러움이나 빠른 반응성을 기대하기는 어렵습니다.

라이선스 정책

  • OrbStack: 개인 개발자에게는 대부분의 기능이 무료로 제공됩니다. 팀 협업이나 고급 네트워킹 기능 등이 필요한 기업을 위한 Pro 플랜(유료)이 있습니다.
  • Docker Desktop: 개인, 교육, 비영리, 소규모 기업(직원 250명 미만 또는 연 매출 1,000만 달러 미만)에게는 무료입니다. 그 이상의 기업에게는 유료 구독이 필수입니다.

기존 Docker Desktop에서 migration하려면?

기존 Docker Desktop에서 migration하려면 아래의 명령어롤 통해 migration이 가능합니다.

1
orb docker migrate

자세한 사항은 orbstack 문서를 참조해주세요.

Docker Desktop을 삭제하고 Orbstack으로 넘어가려면?

아래의 몇가지 step을 진행하면 기존 Docker Desktop을 완전히 삭제 후 Orbstack으로 넘어갈 수 있습니다.

1단계: 현재 Docker 컨텍스트(Context) 확인 및 전환

가장 중요한 첫 단계입니다. 실수로 OrbStack의 데이터를 삭제하는 것을 방지하기 위해, 모든 삭제 명령어는 반드시 Docker Desktop 컨텍스트에서 실행되어야 합니다.

  1. 현재 활성화된 컨텍스트 확인 * 표시가 orbstack이 아닌 desktop-linux 또는 default에 있는지 확인하세요.

    1
    
    docker context ls
    
  2. Docker Desktop 컨텍스트로 전환 (필요시) 만약 현재 컨텍스트가 orbstack으로 되어 있다면, 아래 명령어를 실행하여 반드시 desktop-linux으로 변경하세요.

    1
    
    docker context use desktop-linux
    
  3. 최종 확인 명령어를 실행할 컨텍스트가 올바른지 다시 한번 확인합니다.

    1
    2
    
    docker info | grep -E 'Context|Server Version|Docker Root Dir'
    # Context: desktop-linux 가 보여야 합니다.
    

2단계: Docker 리소스 정리 (CLI 명령어 사용)

아래 명령어들을 순서대로 실행하여 Docker Desktop이 사용하던 컨테이너, 이미지, 볼륨 등을 모두 삭제합니다.

  1. 모든 컨테이너 정지 및 삭제

    1
    2
    3
    4
    5
    
    # 실행 중인 컨테이너 정지
    docker ps -q | xargs -r docker stop
    
    # 모든 컨테이너 삭제 (연결된 익명 볼륨까지)
    docker ps -aq | xargs -r docker rm -fv
    
  2. 사용자 정의 네트워크 삭제

    1
    
    docker network ls --filter type=custom -q | xargs -r docker network rm
    
  3. 모든 이미지 삭제

    1
    
    docker images -q | xargs -r docker rmi -f
    
  4. 모든 볼륨 삭제

    1
    2
    3
    4
    5
    
    # 이름 있는 볼륨 전부 삭제
    docker volume ls -q | xargs -r docker volume rm
    
    # Dangling(사용되지 않는) 볼륨 정리
    docker volume prune -f
    
  5. 시스템 캐시 및 찌꺼기 정리 모든 리소스를 한 번에 정리하는 가장 강력한 명령어입니다. 위 과정을 개별적으로 실행했더라도, 마지막에 이 명령어를 실행하여 남은 모든 것을 정리하는 것이 좋습니다.

    1
    
    docker system prune -af --volumes
    

3단계: Docker Desktop 애플리케이션 완전 삭제

CLI로 리소스를 정리한 후, Docker Desktop 애플리케이션과 관련 설정 파일들을 완전히 제거합니다.

  1. Docker Desktop 컨텍스트 정보 삭제

    1
    
    docker context rm desktop-linux
    
  2. 애플리케이션 및 관련 데이터 삭제

    1
    2
    3
    
    rm -rf ~/Library/Containers/com.docker.docker
    rm -rf ~/Library/Group\ Containers/group.com.docker
    rm -rf ~/.docker/
    

    이후 Applications 폴더에서 Docker 아이콘을 휴지통으로 드래그하여 삭제합니다.

대체 방법: Docker Desktop 공장 초기화
위의 CLI 명령어들이 복잡하게 느껴진다면, Docker Desktop 앱의 설정(Settings) > Troubleshoot > Reset to factory defaults 메뉴를 이용할 수 있습니다.
이는 VM 디스크를 포함한 모든 데이터를 초기화하는 가장 강력하고 간단한 방법입니다. 단, 이 방법을 사용하기 전에도 현재 컨텍스트가 desktop-linux인지 반드시 확인해야 합니다.


4단계: 최종 확인

모든 과정이 완료된 후, orbstack 컨텍스트만 정상적으로 남아있는지 확인합니다.

1
docker context ls

결과가 아래와 같이 orbstack만 보인다면 성공적으로 마이그레이션이 완료된 것입니다.

1
2
3
NAME         DESCRIPTION                               DOCKER ENDPOINT                                      ERROR
default      Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
orbstack *   OrbStack                                  unix:///Users/yoodongjin/.orbstack/run/docker.sock

결론

다음과 같은 경우 OrbStack을 강력히 추천합니다:

  • macOS 사용자이며, 최고의 성능과 낮은 리소스 사용량을 최우선으로 생각하는 경우
  • Docker Desktop의 느린 속도와 높은 자원 소모에 불편함을 겪어본 경우
  • Docker 컨테이너와 함께 가벼운 Linux 가상 머신 환경이 자주 필요한 경우
  • 빠르고 직관적인 네이티브 UI를 선호하는 경우

다음과 같은 경우 Docker Desktop을 계속 사용하는 것이 좋을 수 있습니다:

  • Windows나 Linux 환경에서 작업하거나, 여러 OS를 사용하는 팀과 환경을 통일해야 하는 경우
  • Docker Desktop에서만 제공하는 특정 익스텐션(Extensions)이나 부가 기능이 반드시 필요한 경우
  • 이미 회사의 표준으로 Docker Desktop이 지정되어 있고, 라이선스 문제가 없는 경우

결론적으로, 현재 macOS에서 개발하신다면 OrbStack으로 전환하지 않을 이유가 거의 없다고 할 수 있습니다. 기존 docker CLI 명령어를 그대로 사용할 수 있어 마이그레이션 비용도 거의 들지 않습니다. 한번 사용해보시면 그 성능과 쾌적함에 놀라실 겁니다.

[출처]

  • https://www.youtube.com/watch?v=Z4Ch6CeqFHE
  • https://docs.orbstack.dev/
This post is licensed under CC BY 4.0 by the author.