Skip to main content

Default container security

All containers run with restrictive defaults. No container in v1 runs privileged.
PolicySetting
Dropped capabilitiesAll Linux capabilities dropped by default. Only NET_BIND_SERVICE retained if the service binds to ports < 1024
Read-only root filesystemEnabled where possible. Services that need a writable root get explicit writable overlay mounts
No host PID namespaceContainers never share the host PID namespace
No privileged modeprivileged: true is rejected — in both native manifests and Compose imports
Limited writable mountsOnly explicitly declared volumes and state mounts are writable; all other paths are read-only
No host networkContainers use project-scoped bridge networking; host network mode is not available
No device passthroughNo /dev device mounts in v1

Network isolation

  • Each project gets its own CNI network
  • Inter-project network traffic is blocked
  • Outbound internet access requires the security.network capability to be granted by the user
  • If network capability is denied, all outbound traffic is blocked (except inter-service traffic within the project)

Compose imports

The same hardening rules apply to Compose-imported apps. Fields that violate these policies are rejected during import:
Rejected Compose fieldReason
privileged: trueNo privileged containers in v1
cap_addCapabilities cannot be added
pid: hostNo host PID namespace sharing
network_mode: hostNo host network mode
devicesNo device passthrough
sysctlsNo sysctl modification
security_optManaged by runtime hardening

VM isolation

All containers run inside a persistent Alpine Linux VM managed via Apple’s Virtualization framework. This provides an additional hardware-level isolation boundary between the containers and the macOS host.