volume & bind mount

difference
  • 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不会创建不存在的目录
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。