在容器中管理数据主要有两种方式: 数据卷(Volumes) 、挂载主机目录 (Bind mounts)。
一、数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用。
特点:
- 对 数据卷 的修改会立马生效
- 对 数据卷 的更新,不会影响镜像
- 数据卷 默认会一直存在,即使容器被删除
创建数据卷
- docker volume create my-vol
删除数据卷
- docker volume rm my-vol
- 清理无主数据卷:docker volume prune
查看数据卷
- 查看所有数据卷:docker volume ls
- 查看指定数据卷信息:docker volume inspect my-vol
- 查看指定容器中数据卷信息:docker inspect web下Mounts数据中
挂载数据卷
docker run命令中使用--mount将数据卷挂载到容器里,可挂载多个,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。(类似操作系统mount操作)
二、挂载主机目录
docker run的--mount参数同样可以挂载一个本地主机的目录到容器中去,也可以从主机挂载单个文件到容器中。
- sudo docker run -dit --mount type=bind,source=/var,target=/var ubuntu
- sudo docker run -dit --mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history
本地目录的路径必须是绝对路径;如果本地目录不存在会报错。
Docker挂载主机目录的默认权限是读写,用户也可以通过增加readonly指定为只读:
--mount type=bind,source=/src/webapp,target=/usr/share/nginx/html,readonly
查看容器信息时同样可以看到: