数据卷
概念
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
类似于 linux 下的
mount命令,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷
命令
# 创建docker volume create my-vol# 查看所有数据卷docker volume ls# 查看单个数据卷详情docker volume inspect my-vol# 示例数据[{"CreatedAt": "2019-08-18T05:34:18Z","Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/my-vol/_data","Name": "my-vol","Options": {},"Scope": "local"}]# 删除docker volume rm my-vol# 删除所有无主的数据卷docker volume prune
容器内应用
# 示例, 启动一个 python web appdocker run -d -P \--name web \# -v my-vol:/wepapp \--mount source=my-vol,target=/webapp \training/webapp \python app.py# 查看详情docker inspect web# 数据卷信息位于 mount key 下"Mounts": [{"Type": "volume","Name": "my-vol","Source": "/var/lib/docker/volumes/my-vol/_data","Destination": "/app","Driver": "local","Mode": "","RW": true,"Propagation": ""}],
挂载主机目录
命令与示例
# 挂载目录,--mount 参数若宿主机目录不存在会报错,-v 参数不存在自动新建(旧版本)# readonly 控制权限为只读,默认为读写docker run -d -P \--name web \# -v /src/webapp:/opt/webapp \--mount type=bind,source=/src/webapp,target=/opt/webapp readonly \training/webapp \python app.py# 挂载目录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# 容器内查看docker inspect web# 数据示例"Mounts": [{"Type": "bind","Source": "/src/webapp","Destination": "/opt/webapp","Mode": "","RW": true,"Propagation": "rprivate"}],
