Docker 入门教程之数据管理
2021-08-12 本文已影响0人
phpworkerman
Docker 数据管理的方式
Docker 对于容器数据的存储推荐挂载到宿主机,以此减轻容器的大小,也方便数据和容器解耦。对于容器产生的数据有三种管理方式,分别是可持久化存储的 bind 和 volume,以及临时存储的 tmpfs,这三种方式各有特点:
-
bind(绑定挂载)
指定宿主机中的目录或文件挂载到容器中,数据可以持久化储存,执行效率很高,但是依赖于主机的文件系统,不利于容器和宿主机解耦 -
volume(数据卷挂载)
生成一个数据卷,可以同时绑定多个容器,并且数据可以共享,相比绑定挂载还有其它优势:
1、更容易备份和迁移
2、可以使用 Docker CLI 或 Docker API 进行管理
3、可以在 Linux 和 Windows 平台工作
4、可以更安全的在多个容器间共享
5、可以选择卷的驱动程序,设置远程主机和云服务 -
tmpfs(临时挂载)
数据存储在宿主机的内存中,重启之后数据清空,适合存储一些敏感数据
Docker数据管理
数据管理的操作方式
在运行 docker run 命令进行启动容器时,有两种参数 -v(--volume)和 --mount 都可以实现数据挂载,但在个别场景有些区别:
- -v 挂载方式
三个参数通过一个字段实现,靠冒号(:)区隔,且必须按正确的顺序编写:
1、(bind)第一个参数为宿主机路径,必填,如果路径不存在,会自动创建
1.1、(volume)第一个参数为卷名,可以不设置,系统会为卷分配一个随机且唯一名称
2、第二个参数为容器内绑定的目录,使用绝对路径,必填
3、第三个参数为容器对挂载目录的操作权限,ro 为只读,rw 为读写(默认),可选
# 绑定挂载
docker run -v /var/www/log/:/var/www/nginx/html -it nginx /bin/bash
# 指定卷名
docker run -v test_volume:/etc/nginx/conf.d -it nginx /bin/bash
# 匿名卷
docker run -v /etc/nginx/conf.d -it nginx /bin/bash
卷信息
- --mount 挂载方式
参数以多字段 key=value 形式实现,比 -v 支持的功能更多,显示也更直观
1、type(数据挂载类型),分为 bind、volume、tmpfs
2、source 或 src(挂载源),对于绑定挂载需要指定宿主机的文件或目录
3、destination 或 dst、target(目标容器路径),可以指定文件或目录
4、readonly(是否设置只读),如果不设置,默认是读写
5、bind-propagation(绑定传播),可设置 rprivate, private, rshared, shared, rslave, slave
docker run -it \
--name devtest \
--mount type=bind,source="$(pwd)"/target,target=/app \
nginx
数据卷的管理
- 创建数据卷
docker volume create 卷名
- 查看数据卷列表
docker volume ls
- 查看指定的数据卷信息
docker volume inspect 卷名
- 删除数据卷
docker volume rm 卷名
# 删除所有数据卷
docker volume rm $(docker volume ls -q)
- 删除未使用的数据卷
docker volume prune