- volume
主要用于持久化容器运行中产生的数据。存储在宿主机/var/lib/docker/volumes/目录下,该目录被docker所管理,非docker进程不应该修改这部分数据。一个volume可以同时挂载到多个容器中,当没有容器使用该volume时,它仍然对docker来说是可用的,不会自动删除。使用docker volume prune可以删除本地没有被容器使用的volume。volume分为命名的和匿名的。如下创建一个匿名的volume挂载到 /var/lib/mysql,docker会为该volume自动生成一个唯一的名称。
docker run --name some-mysql -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
使用volume时,-v 和 --mount的区别
-v/--volume
由3个字段组成,用:隔开。
1.唯一的volume名称,匿名volume可以忽略
2.容器中挂载点路径
3.可选的字段,ro:read only
docker run -d \
--name devtest \
-v myvol2:/app \
nginx:latest
- bind mount
当使用bind mount时,一般都是将主机上的一个全路径或者相对路径挂载到容器中。
If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory.
-v 会创建不存在的目录
If you use --mount to bind-mount a file or directory that does not yet exist on the Docker host, Docker does not automatically create it for you, but generates an error.
--mount不会创建不存在的目录