一、数据卷
1、数据卷相关概念
数据卷实现数据保存与共享,数据卷容器也是容器,但它专门提供数据卷给其他容器挂载。在镜像中被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷空时复制)。数据卷特性如下:
-
数据卷可以在容器之间共享和重用
-
对数据卷的修改会立马生效
-
对数据卷的更新,不会影响镜像
-
数据卷默认会一直存在,即使容器被删除
2、创建数据卷
#创建数据卷
docker volume create 数据卷名
#查看所有数据卷
docker volume ls
#查看指定数据卷信息
docker volume inspect 数据卷名
3、启动挂载数据卷的容器
在docker run中添加参数--mount,一次docker run可以挂在多个数据卷
--mount参数说明:source为数据卷名称,target为容器内文件系统挂载点,表明数据卷将加载到容器的这个目录下。
示例中创建了一个web容器,挂载datewhale数据卷到/usr/share/nginx/html
目录。
$ docker run -d -P \
--name web \
--mount source=datawhale,target=/usr/share/nginx/html \
nginx:alpine
查看数据卷的信息可以通过查看容器的信息。命令为:docker inspect 容器名
4、删除数据卷
由于数据卷持久化数据,生命周期独立于容器,删除容器后不会自动删除数据卷,若要同时删除,可以使用docker rm -v命令
#删除数据卷
docker volume rm 数据卷名
#清理无主数据卷
docker volume prune
二、挂在主机目录
挂载主机目录到容器中时,需要使用绝对路径,并且目录不存在时会发生错,如示例中加载主机/src/webapp目录到容器/usr/share/nginx/html。并且可以在--mount后添加readonly,这样挂载后变为制度状态
$ docker run -d -P \
--name web \
--mount type=bind,source=/src/webapp,target=/usr/share/nginx/html \
nginx:alpine