Import from Docker

Copy images, networks and containers out of Docker Desktop into whichever engine Hopper runs.

Hopper's pitch on macOS is that you stop running Docker Desktop, and that is only true if what you already have comes with you.

Import scans for another engine, lists what it holds, and copies your selection across. Nothing is removed from the source. If the import goes wrong, Docker is exactly where it was.

What it finds

Docker Desktop, Colima and Rancher Desktop, in that order, plus the classic system socket:

Whichever engine Hopper is currently running is excluded, so it never offers to copy an engine onto itself.

How it copies

Images. Into an Engine API engine, a tar streams straight from /images/get to /images/load. Into Apple's runtime there is no socket to load into, so the tar lands on disk first and container image load reads it back — slower, and the only way in.

Containers are recreated, not moved. The image, ports, mounts and labels travel; the writable layer does not, because it is by definition scratch. That is what makes a stack come back up.

Networks are recreated on Engine API engines. On Apple they are not, because Apple attaches a container to its networks when it creates it.

What it does not copy yet

Volume contents. The volume is listed and you can select it, and Hopper will tell you plainly that the data did not move:

Volume contents are not copied yet. Create the volume on this engine and move the data yourself before starting the container that needs it.

That warning matters more than it looks. A user who assumes their database volume came across finds out when the container starts empty, which is exactly the failure worth being loud about.

Safety

The source engine is pinned when you scan, so a daemon coming up or down mid-import cannot quietly redirect it somewhere else. Per-item failures are reported against that item and the run continues — one unreadable image should not cost you the other nineteen.

Bind mounts are called out too: a container that mounts a host path gets a warning, because that path has to exist on the destination for the mount to mean anything.