NexusCS

OrbStack

DevOps

Getting started

Introduction

OrbStack is a fast, lightweight Docker Desktop alternative + Linux machine manager for macOS. Built with native Swift, it uses ~0.1% idle CPU, releases memory dynamically, and starts in 2 seconds.

Requirements: macOS 13.0+

Installation

# Install via Homebrew
brew install orbstack

# Or download from
# https://orbstack.dev

Auto-installs: docker, docker compose, docker buildx, kubectl, orb, orbctl

Migration from Docker Desktop

# Migrate Docker Desktop data
orb docker migrate

# Switch to OrbStack
docker context use orbstack

# Switch back to Docker Desktop
docker context use desktop-linux

Linux Machines

Creating machines

# Create Ubuntu machine
orb create ubuntu my-machine

# Specific version
orb create ubuntu:jammy my-machine

# x86 on Apple Silicon
orb create --arch amd64 ubuntu my-x86

# With password
orb create --set-password ubuntu my-vm

Available distros: Ubuntu, Debian, Fedora, Arch, Alpine, NixOS, Alma, CentOS, Rocky, Oracle, openSUSE, Devuan, Gentoo, Kali, Void

Managing machines

orb list                    # List all machines
orb start <machine>         # Start machine
orb stop <machine>          # Stop machine
orb restart <machine>       # Restart machine
orb delete <machine>        # Delete machine
orb rename <old> <new>      # Rename machine
orb default <machine>       # Set default machine
orb info <machine>          # Machine info
orb logs <machine>          # Boot logs

Shell access

# Shell into default machine
orb

# Shell into specific machine
orb -m my-machine

# Specific machine + user
orb -m my-machine -u my-user

# Run command on default
orb uname -a

# Run on specific machine
orb -m my-machine uname -a

Docker Integration

Docker commands

OrbStack provides full Docker CLI compatibility as a drop-in replacement.

# Docker socket location
/var/run/docker.sock

# View Docker config
orb config docker

# Restart Docker engine
orb restart docker

# View Docker logs
orb logs docker

x86 emulation

Uses Rosetta (2x faster than QEMU on Apple Silicon)

# Run x86 container
docker run -it --rm \
  --platform linux/amd64 alpine

# Set default platform
export DOCKER_DEFAULT_PLATFORM=linux/amd64

SSH agent forwarding

docker run -it --rm \
  -v /run/host-services/ssh-auth.sock:/agent.sock \
  -e SSH_AUTH_SOCK=/agent.sock \
  alpine

SSH Access

SSH configuration

Built-in SSH server on port 32222

Key location: ~/.orbstack/ssh/id_ed25519

SSH connections

# Default machine
ssh orb

# Specific machine
ssh ubuntu@orb

# Specific user
ssh myuser@orb

# Specific user + machine
ssh myuser@ubuntu@orb

VS Code integration

  1. Install "Remote - SSH" extension
  2. Connect to orb host
  3. Access Linux machines directly

File Sharing

Mac ↔ Linux paths

# Mac files from Linux
/Users/foo/...
/mnt/mac/Users/foo/...

# Linux files from Mac
~/OrbStack/<machine-name>/

# Docker volumes from Mac
~/OrbStack/docker/volumes/

# Docker images from Mac
~/OrbStack/docker/images/

File transfer commands

# Linux → Mac
orb pull ~/foo.txt

# Mac → Linux
orb push ~/bar.txt

# To specific machine
orb push -m my-machine ~/bar.txt /dest/

Networking

Domain names

# Container domains
container-name.orb.local

# Compose domains
service.project.orb.local

# Machine domains
machine-name.orb.local

# Index page
http://orb.local

# Automatic HTTPS
https://container-name.orb.local

Custom domains

# Single domain
docker run \
  -l dev.orbstack.domains=foo.local \
  nginx

# Multiple domains
docker run \
  -l dev.orbstack.domains=foo.local,bar.local \
  nginx

# Wildcard domains
docker run \
  -l dev.orbstack.domains=*.foo.local \
  nginx

# Custom port
docker run \
  -l dev.orbstack.http-port=8080 \
  nginx

Special hostnames

# Mac from container
host.docker.internal

# Mac from machine
host.orb.internal

# Docker from machine
docker.orb.internal

Throughput:

  • Mac ↔ Linux: 45 Gbps
  • Machine ↔ Machine: 115 Gbps

Proxy configuration

# HTTP proxy
orb config set network_proxy http://example.com

# HTTPS with auth
orb config set network_proxy \
  https://user:password@example.com:8443

# SOCKS5
orb config set network_proxy \
  socks5://user:password@example.com:1081

# System proxy
orb config set network_proxy auto

# Disable proxy
orb config set network_proxy none

Kubernetes

Cluster management

# Start cluster
orb start k8s

# Stop cluster
orb stop k8s

# Restart cluster
orb restart k8s

# Delete cluster
orb delete k8s

Local images

Set imagePullPolicy: IfNotPresent in your manifests to use local Docker images.

Service access from Mac

# cluster.local domains
curl service.namespace.svc.cluster.local

# LoadBalancer/Ingress
*.k8s.orb.local

# NodePort
localhost:PORT

# ClusterIP
# Access directly by IP

# Pod IPs
# Directly accessible

Ingress-NGINX setup

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml

Mac Integration

Mac commands from Linux

# Run Mac command
mac uname -a

# Link command for direct use
mac link pbcopy

# Unlink command
mac unlink pbcopy

# Mac notification
mac notify "Title" "Body"

Pre-linked commands

These work directly without mac prefix:

  • open
  • osascript
  • code

macOS binary execution

macOS executables run directly via binfmt_misc:

# Compile and run macOS binary
mac gcc -o foo foo.c && ./foo

Configuration

System settings

# Enable Rosetta
orb config set rosetta true

# Memory limit (MB)
orb config set memory_mib 8192

# CPU % limit
orb config set cpu 50

# Expose SSH on LAN
orb config set ssh.expose_port true

# Docker Swarm node name
orb config set docker.node_name mynode

Reset options

# Clear Docker data
orb delete docker

# Factory reset
orb reset

orb Commands Reference

Main commands

Command Description
orb Shell into default machine
orb create Create new machine
orb list List machines
orb start Start machine
orb stop Stop machine
orb restart Restart machine
orb delete Delete machine
orb info Machine information
orb logs View machine logs

Other commands

Command Description
orb config Configuration management
orb default Set default machine
orb docker Docker commands
orb k8s Kubernetes commands
orb migrate Migration tools
orb pull Pull file to Mac
orb push Push file to Linux
orb rename Rename machine
orb reset Factory reset
orb ssh SSH configuration
orb status System status
orb update Update OrbStack
orb version Show version

Also see