RetroArch installs to a folder inside the container, not on your main computer

When you run RetroArch inside a container — whether that's Docker, Podman, or another containerization tool — the program and all its files land in a directory within the container's own filesystem. The container is a sealed environment, so RetroArch cannot touch your host machine's directories unless you explicitly tell the container to share them.

The exact installation path depends on how the container image was built. Most RetroArch containers place the program in /opt/retroarch, /usr/local/bin/retroarch, or /home/retroarch. The configuration files, save states, and ROM libraries typically go into a separate folder that you mount from your host machine — usually something like /home/retroarch/.config/retroarch inside the container, which points to a real folder on your computer.

This separation is intentional. It means you can delete the container entirely and your games, saves, and settings remain on your host machine. When you start a new container, you point it to the same folders and everything is still there.

Key Takeaways

  • RetroArch files inside a container live in the container's filesystem, typically under /opt/retroarch or /usr/local/bin, and disappear if you delete the container.
  • Your game ROMs, save files, and configuration should be stored in folders on your host machine and mounted into the container so they persist.
  • You control what folders the container can see by using volume mounts (in Docker: the -v flag) when you start the container.
  • Most RetroArch container images come with emulator cores already installed, so you only need to provide your own ROM files and point the container to them.

How container volume mounts work with RetroArch

A volume mount is a bridge between a folder on your host machine and a folder inside the container. When you start a RetroArch container, you tell it "use this folder on my computer as the place where RetroArch stores its settings and ROMs."

In Docker, the command looks like this:

docker run -v /path/on/host:/path/in/container retroarch-image

If you have your ROM files in /home/username/games/roms on your computer, you might mount it like -v /home/username/games/roms:/roms. Inside the container, RetroArch sees a folder called /roms and can read the games from there. When you add a new ROM to /home/username/games/roms on your host, it automatically appears in the container without rebuilding anything.

Configuration files work the same way. Mount your host's ~/.config/retroarch directory into the container's /home/retroarch/.config/retroarch, and your controller settings, shader preferences, and save states stay on your computer even after the container stops.

Where to find RetroArch files inside the container

If you need to look inside the running container — to check what cores are installed, verify a configuration file, or troubleshoot — you can open a shell inside it. With Docker, use docker exec -it container-name /bin/bash to get a command prompt inside the container.

Once inside, the RetroArch executable is usually at /opt/retroarch/bin/retroarch or /usr/local/bin/retroarch. The emulator cores (the actual game-playing engines) typically live in /opt/retroarch/lib/retroarch/cores or /usr/lib/retroarch/cores. Configuration files are in /home/retroarch/.config/retroarch if you mounted them, or in the container's temporary storage if you did not.

Most people never need to look inside the container. The important thing is that you mounted your ROM and configuration folders correctly when you started it. If RetroArch cannot find your games or your settings are not saving, the problem is almost always a mount path mismatch — the folder you told the container to use does not exist on your host, or the path inside the container does not match what RetroArch is looking for.

Keeping your data separate from the container image

The container image itself is a template — a read-only blueprint that Docker or Podman uses to create a running container. The image contains RetroArch and its cores, but it should not contain your personal data. When you delete a container, the image stays on your system and you can start a new container from it anytime.

This is why mounting volumes matters. Your ROMs, save files, and configuration belong on your host machine in regular folders. The container is temporary; your data is permanent. If you ever need to update RetroArch, switch to a different container image, or move to a different computer, your games and settings come with you because they were never locked inside the container.

Some people make the mistake of copying ROMs into the container or editing configuration files only inside the container. When they delete the container, all that work vanishes. The right approach is to keep everything on your host and let the container read from there.

Setting up mounts when you first run the container

Before you start a RetroArch container, create the folders on your host where you want to keep your ROMs and configuration. For example:

mkdir -p ~/retroarch-data/roms ~/retroarch-data/config

Then start the container with mounts pointing to those folders. A typical Docker command might look like:

docker run -v ~/retroarch-data/roms:/roms -v ~/retroarch-data/config:/home/retroarch/.config/retroarch retroarch-image

The first -v flag tells the container "my ROMs are in /roms inside you." The second tells it "store your configuration in /home/retroarch/.config/retroarch inside you, which points to my host's config folder." Every time you start the container with the same mounts, it sees the same data.

If you are using Podman instead of Docker, the syntax is identical. If you are using a container management tool like Portainer or Yacht, you set up mounts through the web interface instead of the command line, but the concept is the same.

What happens if you do not mount a folder

If you start a RetroArch container without mounting any volumes, the container creates temporary storage that exists only while the container is running. Any ROMs you add, any saves you create, any settings you change — all of it vanishes the moment you stop the container. The next time you start a fresh container from the same image, it has no memory of what you did before.

This is fine for testing. You can spin up a container, try RetroArch, and throw it away. But for actual use, you need mounts. Without them, you are starting from scratch every time.

Some container images come with default mount points already defined. If the image's documentation says "mount your ROMs to /roms," that is a hint about where the image expects to find them. But you still have to actually create the mount when you run the container — the image cannot do that for you.

Frequently Asked Questions

Can I move my RetroArch container to a different computer?

The container image can move, but your data stays on the host machine where you created it. If you want to move everything, copy your mounted folders (ROMs, configuration, saves) to the new computer, then start a RetroArch container there with mounts pointing to those folders. The image itself you can pull fresh from wherever it is hosted.

Do I need to install RetroArch cores inside the container?

Most RetroArch container images come with cores already installed. You can check by opening RetroArch inside the container and looking in the cores menu. If a core is missing, you can download it from within RetroArch, and it will install to the mounted configuration folder so it persists after the container stops.

What if I want to use the same ROMs and saves with RetroArch on my host machine too?

Mount the same folders to both. If your host has RetroArch installed normally and your container also has RetroArch, point them both to ~/retroarch-data/roms and ~/retroarch-data/config. They will share the same games and settings. Be careful not to run both at the same time, though — they might conflict if they try to write to the same configuration file simultaneously.

Where do save states go if I do not mount a config folder?

They go into the container's temporary storage and disappear when the container stops. Always mount your configuration folder if you want to keep saves. The configuration folder is where RetroArch stores save states, save files, and all your preferences.

Can I see the RetroArch installation folder from my host machine?

No, not unless you mount it. The container's filesystem is separate from your host's. You can open a shell inside the container with docker exec and look around, but you cannot browse the container's folders from your file manager on the host. This is by design — it keeps the container isolated.