数据卷是一个可提供一个或多个容器使用的特殊目录,其绕过UFS,可以提供很多有用的特性:
- 数据卷 可以在容器之间共享和重用
- 对 数据卷 的修改会立刻生效
- 对 数据卷 的更新不影响镜像
- 数据卷 默认会一直存在,即使容器被删除
数据卷的使用,类似于Linux下对目录或文件进行mount,镜像中的被指定为挂载点的目录文件会复制到数据卷中
基础操作
docker volume create my-vol
查看所有的数据卷
docker volume ls
在主机中查看只能怪数据卷的信息
docker volume inspect my-vol
启动数据卷,加载数据
docker run -d -P
--name web
# -v my-vol:/usr/share/nginx/html
--mount source =my-vol,target=/usr/share/nginx/html
mginx:alpine
删除数据卷
docker volume rm my-vol
数据卷
是被设计用来持久化数据的,其生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷
。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用docker rm -v
无用的数据卷可能会占用很多空间,要清理请可以使用以下命令
docker volume prune
挂载主机目录
挂载一个主机目录作为数据卷
使用 --mount标记可以指定挂载一个主机本地的目录到容器中去。
docker run -d -P
-- name web
# -v /src/webapp:/usr/share/nginx/html
--mount type=bind,source=/src/webapp,target=/usr/share/nginx/html
#,readonly
nginx:alpine
- 上面指定
/src/webapp
目录到容器的/usr/share/nginx/html
目录 -v
参数是如果本地目录不存在Dockers会帮你创建一个文件夹,--mount时本地目录不存在时,Docker也会报错- 添加
readonly
后,就变为了只读属性
查看数据卷的具体信息
产看web容器的信息docker inspect web
,会列出挂载目录的配置信息。在Mounts key下
"Mounts": [
{
"Type": "bind",
"Source": "/src/webapp",
"Destination": "/usr/share/nginx/html",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
挂载一个本地主机文件作为数据卷
--mount
标记也可以从主机挂载单个文件到容器中
docker run --rm -it
# -v $HOME/.bash_history:/root/.bash_history
--mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history
ubuntu:18.04
bash
如此可以记录输入的命令