This error appears on Apple Silicon Macs when Docker Desktop needs Rosetta 2 for x86/amd64 emulation. Install Rosetta 2 via Terminal or enable the Rosetta setting in Docker Desktop to run Intel-based containers on M1/M2/M3 Macs.
When running Docker Desktop on Apple Silicon Macs (M1, M2, M3, etc.), you may encounter the "Docker Desktop requires Rosetta 2 to be installed" error. This occurs because Docker Desktop needs Rosetta 2 to run certain Intel-based (x86_64/amd64) binaries and container images. Rosetta 2 is Apple's translation layer that allows Intel-based applications to run on Apple Silicon processors. While Docker Desktop version 4.3.0 and later removed the hard requirement for Rosetta 2, some optional command-line tools and Intel-based container images still need it. There are two contexts where Rosetta 2 matters for Docker: 1. **Docker Desktop startup**: Earlier versions required Rosetta 2 to start at all. Modern versions can start without it but recommend having it installed. 2. **Running amd64 containers**: When you run Intel/AMD64 architecture containers on Apple Silicon, you can use either QEMU (slower) or Rosetta 2 (faster) for emulation.
Before installing Rosetta 2, verify whether it's already present on your system:
Check via Terminal:
# Check if Rosetta 2 is installed
/usr/bin/pgrep -q oahd && echo "Rosetta 2 is installed" || echo "Rosetta 2 is NOT installed"Alternative check:
# Look for the Rosetta directory
ls /Library/Apple/usr/share/rosetta 2>/dev/null && echo "Rosetta 2 is installed"If Rosetta 2 is already installed, the issue may be with Docker Desktop's detection. Proceed to step 3 to configure Docker Desktop settings.
Install Rosetta 2 using the softwareupdate command:
Run in Terminal:
softwareupdate --install-rosettaYou'll be prompted to accept the license agreement. Type A to agree.
For automated/unattended installation (scripts, CI):
softwareupdate --install-rosetta --agree-to-licenseVerify installation succeeded:
/usr/bin/pgrep -q oahd && echo "Rosetta 2 installed successfully"After installation, restart Docker Desktop if it's running.
Docker Desktop has a setting to use Rosetta 2 for faster x86/amd64 emulation:
Via Docker Desktop UI:
1. Open Docker Desktop
2. Click the gear icon (Settings) in the top right
3. Go to General or Features in Development
4. Look for "Use Rosetta for x86_64/amd64 emulation on Apple Silicon"
5. Enable the checkbox
6. Click Apply & Restart
Via command line (using Docker Desktop CLI):
# Check current settings
cat ~/Library/Group Containers/group.com.docker/settings.json | grep -i rosettaNote: This option requires Rosetta 2 to be installed first. If the option is greyed out, ensure Rosetta 2 is properly installed.
After installing Rosetta 2, fully restart Docker Desktop:
Quit Docker Desktop completely:
1. Click the Docker icon in the menu bar
2. Select Quit Docker Desktop
3. Wait for all Docker processes to stop
Verify Docker is fully stopped:
# Check for running Docker processes
pgrep -l DockerRestart Docker Desktop:
1. Open Docker Desktop from Applications
2. Wait for it to fully start (whale icon stops animating)
Alternative: Force quit and restart:
# Force quit Docker Desktop
osascript -e 'quit app "Docker Desktop"'
pkill -9 Docker 2>/dev/null
# Wait a moment then restart
sleep 2
open -a "Docker Desktop"Newer Docker Desktop versions have improved Rosetta 2 handling:
Check current version:
docker versionUpdate via Docker Desktop:
1. Click the Docker icon in menu bar
2. Select Check for Updates
3. Download and install if available
Manual update:
1. Go to https://www.docker.com/products/docker-desktop/
2. Download the latest Apple Silicon version
3. Open the .dmg file
4. Drag Docker to Applications (replacing existing)
5. Open Docker Desktop
Important notes:
- Docker Desktop 4.3.0+ removed the hard Rosetta 2 requirement
- Docker Desktop 4.29.0+ may have changed Rosetta behavior
- Always use the Apple Silicon (arm64) version, not Intel
The best solution is to avoid needing Rosetta 2 by using ARM64-native images:
Check image architecture:
# Inspect an image to see supported architectures
docker manifest inspect --verbose nginx:latest | grep architecturePull ARM64-specific images:
# Explicitly request ARM64 platform
docker pull --platform linux/arm64 nginx:latestSpecify platform in docker-compose:
services:
web:
image: nginx:latest
platform: linux/arm64Build multi-arch images:
# Build for both ARM64 and AMD64
docker buildx build --platform linux/arm64,linux/amd64 -t myapp:latest .Most popular images (nginx, postgres, redis, node, python) now have ARM64 variants available.
If Rosetta 2 causes issues, you can fall back to QEMU emulation:
Disable Rosetta emulation in Docker Desktop:
1. Open Docker Desktop Settings
2. Go to General or Features in Development
3. Uncheck "Use Rosetta for x86_64/amd64 emulation on Apple Silicon"
4. Click Apply & Restart
Docker will then use QEMU for x86/amd64 emulation instead.
QEMU vs Rosetta 2 comparison:
| Feature | QEMU | Rosetta 2 |
|---------|------|-----------|
| Speed | Slower | Faster |
| Compatibility | Higher | Some edge cases |
| Requirement | Built into Docker | Requires installation |
| Memory | Higher overhead | Lower overhead |
Note: Some specific workloads may work better with QEMU if you encounter Rosetta-related crashes or compatibility issues.
macOS Sequoia (15.x) introduced some compatibility changes with Rosetta 2 and Docker:
If Docker Desktop doesn't detect Rosetta on Sequoia:
1. Reinstall Rosetta 2:
# Remove and reinstall
sudo rm -rf /Library/Apple/usr/share/rosetta
softwareupdate --install-rosetta --agree-to-license2. Reset Docker Desktop completely:
- Go to Docker Desktop > Troubleshoot > Reset to factory defaults
- Or manually delete Docker data:
rm -rf ~/Library/Group Containers/group.com.docker
rm -rf ~/Library/Containers/com.docker.docker
rm -rf ~/.docker3. Reinstall Docker Desktop:
- Download the latest version from docker.com
- Ensure you're using the Apple Silicon version
4. Check for macOS updates:
- Apple may release updates that fix Rosetta compatibility
- Go to System Settings > General > Software Update
The old docker-compose v1 (standalone binary) requires Rosetta 2 on Apple Silicon. Docker Compose v2 is native.
Check your current version:
# v1 shows: docker-compose version 1.x.x
# v2 shows: Docker Compose version v2.x.x
docker-compose version
docker compose versionUse Compose v2 (bundled with Docker Desktop):
# v2 syntax (recommended)
docker compose up
# vs v1 syntax (deprecated)
docker-compose upSet alias if needed:
# Add to ~/.zshrc or ~/.bashrc
alias docker-compose='docker compose'Docker Compose v2 is included with Docker Desktop 4.x and runs natively on Apple Silicon without requiring Rosetta 2.
Understanding Rosetta 2 and Docker on Apple Silicon:
Apple Silicon Macs use ARM64 architecture, while many Docker images are built for x86_64/amd64 (Intel). When you run an Intel image on Apple Silicon, Docker needs to emulate the x86_64 architecture.
Emulation options:
1. QEMU: Software-based emulation, slower but built into Docker
2. Rosetta 2: Apple's translation layer, faster due to hardware optimizations in M-series chips
Why Rosetta 2 is faster:
The M1/M2/M3 chips have a hardware optimization called "Total Store Ordering" (TSO) that allows them to efficiently access memory using x86 addressing schemes. Rosetta 2 leverages this for significant performance gains over pure software emulation.
Docker VMM (Virtual Machine Manager) limitation:
Docker VMM is a newer virtualization backend for Docker Desktop. As of late 2024, Docker VMM does not support Rosetta 2, so x86/amd64 emulation falls back to QEMU which is slower.
CI/CD considerations for Apple Silicon runners:
- GitHub Actions M1 runners may need Rosetta pre-installed
- Add softwareupdate --install-rosetta --agree-to-license to setup scripts
- Consider building multi-arch images to avoid emulation entirely
Performance recommendations:
1. Use ARM64-native images when available
2. Build multi-architecture images for your own applications
3. Enable Rosetta emulation for any remaining x86_64 needs
4. Consider Docker VMM if you don't need x86 emulation
Historical context:
- Docker Desktop for Apple Silicon initially required Rosetta 2
- Version 4.3.0 (2021) removed the hard requirement
- Some optional CLI tools still need it
- The "Use Rosetta for x86/amd64 emulation" feature was added later as a performance optimization
image operating system "linux" cannot be used on this platform
How to fix 'image operating system linux cannot be used on this platform' in Docker
manifest unknown: manifest unknown
How to fix 'manifest unknown' in Docker
cannot open '/etc/passwd': Permission denied
How to fix 'cannot open: Permission denied' in Docker
Error response from daemon: failed to create the ipvlan port
How to fix 'failed to create the ipvlan port' in Docker
toomanyrequests: Rate exceeded for anonymous users
How to fix 'Rate exceeded for anonymous users' in Docker Hub