Docker数据卷之进阶篇

容器之间数据共享,修改同步

配置如下:

  1. type 指定挂载方式,我们这里用到的是 volume,其实还可以有 bind tmpfs

Volunme:这个目录只有Docker可以管理,其他进程不能修改。如果想持久保存容器的 应用数据,VolumesDocker推荐的挂载方式。

Bind:容器内的数据被存放到宿主机文件系统的任意位置,甚至存放到一些重要的系统 目录或文件中。除了Docker之外的进程也可以任意对他们进行修改;

tmpfs容器的数据只会存放到宿主机的内存中,不会被写到宿主机的文件系统中,因 此不能持久保存容器的应用数据。

  1. volume-driver 指定挂载数据卷的驱动程序,默认值是 local
  2. source 指定挂载的源,对于一个命名的数据卷,这里应该指定这个数据卷的名称。在使用时可以写 source,也可以简写为 src
  3. destination 指定挂载的数据在容器中的路径。在使用时可以写 destination,也可以简写为 dst target
  4. readonly 指定挂载的数据为只读。
  5. volume-opt 可以指定多次,用来提高更多的 mount 相关的配置。
  6. Target=/data,挂载到容器/data目录,没有则自动创建表

创建挂载卷:docker volume create my-data

卷的详细信息docker volume inspect my-data

数据卷列表:docker volume ls

移除卷docker volume rm my-data

清除无主的数据卷docker volume prune

我们可以使用-f或--force选项强行删除正在使用中的容器。然后再删除卷

docker container rm –f $(docker container ls -aq)

docker volume rm my-data

挂载数据卷命令:[默认目录:/var/lib/docker/volumes/my-data]

1.docker run -id --mount type=volume,source=my-data,target=/data ubuntu /bin/bash

2.docker run -it -v /home/data/:/home/data/:ro --name test ubuntu:16.04 bin/bash

容器目录挂载本地目录:[冒号前为宿主机目录,冒号后为容器目录]

默认挂载的路径权限为读写:[ro表示readonly只读]

 

注意:

1.如果本地数据卷或者本地目录尚未创建,-v命令则会自动创建,--mount则会报错

 

2.如果是容器里的目录不存在,两者都会自动创建

 

3.--mount命令解析:

由多个键=值组成,

type=bind/volume/tmpfs,(省略该字段则默认为volume

可使用source/src=本机目录文件,(省略该字段则为匿名卷)

target/destination/dst=容器目录,

可指定readonly)

 

posted @ 2019-05-09 14:49  Cool_Yang  阅读(410)  评论(0编辑  收藏  举报