The first option most people encounter is the bind mount, where part of your local filesystem is shared with the container. Both of these use the -v flag to docker run to specify some files to share with the container. So the natural next questions are, how can I see my other files? And how can my container write data that I can read later and maybe use in other containers? This is where bind mounts and volumes come in. You’ll quickly find that (1) the container has its own filesystem, based on the filesystem in the Ubuntu image (2) you can create, delete and modify files, but your changes are local to the container and are lost when the container is deleted (3) the container doesn’t have access to any other files on your host computer. Suppose you run an Ubuntu container with docker run -it ubuntu bash. How do I see my source code inside my container? What’s the difference between a volume and a bind mount? Why is file sharing slower than on Linux, and how can I speed it up? In this blog post, I’ll cover the options you have, some tips and tricks, and finish with a sneak preview of what we’re currently working on. One of the topics users of Docker Desktop often ask us about is file sharing.