--- description: Using tmpfs mounts title: Use tmpfs mounts keywords: storage, persistence, data persistence, tmpfs redirect_from: - /engine/admin/volumes/tmpfs/ --- [Volumes](volumes.md) and [bind mounts](bind-mounts.md) allow you to share files between the host machine and container. This allows you to persist data even after the container is stopped. If you're running Docker on Linux, you have a third option: `tmpfs` mounts. When you create a container with a `tmpfs` mount, the container has a way to create files outside the container's writable layer, just like it happens with volumes and bind mounts. ![tmpfs on the Docker host](images/types-of-mounts-tmpfs.png) As opposed to volumes and bind mounts, a `tmpfs` mount is temporary, and only persisted in the host memory. When the container stops, the `tmpfs` mount is removed, and files written there won't be persisted. This is useful to temporarily store sensitive files that you don't want to persist in either the host or the container writable layer. ## Limitations of tmpfs mounts * Unlike volumes and bind mounts, you can't share `tmpfs` mounts between containers. * This functionality is only available if you're running Docker on Linux. ## Choosing the --tmpfs or --mount flag Originally, the `--tmpfs` flag was used for standalone containers and the `--mount` flag was used for swarm services. However, starting with Docker 17.06, you can also use `--mount` with standalone containers. In general, `--mount` is more explicit and verbose. The biggest difference is that the `--tmpfs` flag does not support any configurable options. - **`--tmpfs`**: Mounts a `tmpfs` mount without allowing you to specify any configurable options, and can only be used with standalone containers. - **`--mount`**: Consists of multiple key-value pairs, separated by commas and each consisting of a `=` tuple. The `--mount` syntax is more verbose than `--tmpfs`: - The `type` of the mount, which can be [`bind`](bind-mounts-md), `volume`, or [`tmpfs`](tmpfs.md). This topic discusses `tmpfs`, so the type is always `tmpfs`. - The `destination` takes as its value the path where the `tmpfs` mount is mounted in the container. May be specified as `destination`, `dst`, or `target`. - The `tmpfs-type` and `tmpfs-mode` options. See [tmpfs options](#tmpfs-options). The examples below show both the `--mount` and `--tmpfs` syntax where possible, and `--mount` is presented first. ### Differences between `--tmpfs` and `--mount` behavior - The `--tmpfs` flag does not allow you to specify any configurable options. - The `--tmpfs` flag cannot be used with swarm services. You must use `--mount`. ## Use a tmpfs mount in a container To use a `tmpfs` mount in a container, use the `--tmpfs` flag, or use the `--mount` flag with `type=tmpfs` and `destination` options. There is no `source` for `tmpfs` mounts. The following example creates a `tmpfs` mount at `/app` in a Nginx container. The first example uses the `--mount` flag and the second uses the `--tmpfs` flag.
```bash $ docker run -d \ -it \ --name tmptest \ --mount type=tmpfs,destination=/app \ nginx:latest ```
```bash $ docker run -d \ -it \ --name tmptest \ --tmpfs /app \ nginx:latest ```
Verify that the mount is a `tmpfs` mount by running `docker container inspect tmptest` and looking for the `Mounts` section: ```json "Tmpfs": { "/app": "" }, ``` Remove the container: ```bash $ docker container stop tmptest $ Docker container rm tmptest ``` ### Specify tmpfs options `tmpfs` mounts allow for two configuration options, neither of which is required. If you need to specify these options, you must use the `--mount` flag, as the `--tmpfs` flag does not support them. | Option | Description | |:-------------|:------------------------------------------------------------------------------------------------------| | `tmpfs-size` | Size of the tmpfs mount in bytes. Unlimited by default. | | `tmpfs-mode` | File mode of the tmpfs in octal. For instance, `700` or `0770`. Defaults to `1777` or world-writable. | The following example sets the `tmpfs-mode` to `1770`, so that it is not world-readable within the container. ```bash docker run -d \ -it \ --name tmptest \ --mount type=tmpfs,destination=/app,tmpfs-mode=1770 \ nginx:latest ``` ## Next steps - Learn about [volumes](volumes.md) - Learn about [bind mounts](bind-mounts.md) - Learn about [storage drivers](/storage/storagedriver/)