Docker - 命令 - volume 相关
Posted xy14
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker - 命令 - volume 相关相关的知识,希望对你有一定的参考价值。
- 概述
- docker volume 命令
- 背景
- docker 容器的存储, 通常需要独立于镜像
- docker volume 就是负责这块的命令
1. 写在 docker volume 之前
- 概述
- docker run 与 volume 相关的介绍
- 背景
- 其实在使用 docker [container] run 的时候, 我们已经在使用 volume 了
- volume
- 概述
- 卷
- 卷
- 类似
- linux 里的 卷
- windows 里的 盘
- 类似
- 作用
- 对接其他设备
- 拓展存储空间
- 隔离存储区域
- 对数据的迁移, 复用, 也有支持
- 概述
1. 首先, 这个不是 volume
- 概述
- docker run -v 中, 本地目录 与 容器路径 对接, 不是 volume
命令
> docker run --name some-nginx1 -v $(pwd)/html:/usr/share/nginx/html -d nginx
- 结果
- 容器成功启动
- 容器的 ‘/usr/share/nginx/html‘ 目录, 与 宿主机 的 ‘$(pwd)/html‘ 目录, 成功关联
- 但是
- 并没有创建 volume
- 验证
- docker container inspect
- HostConfig 下
- Volumes 字段, 值为 null
- HostConfig 下
- docker volume ls
- 无法查到 新的 volume
- docker container inspect
- 特性
- 触发
- 填写路径时, 需要用以下方式触发
- /
- ~/
- 填写路径时, 需要用以下方式触发
- 路径
- host 上如果不存在, 主动创建
- container 上如果不存在, 主动创建
- 覆盖
- 如果冲突, 则以 host 为准
- 触发
2. 然后, 我们开始使用 volume
- 概述
- 在 docker run 中使用 volume
- 位置
路径
# 默认位置 /var/lib/docker/volumes # 具体位置, 可以通过 docker container inspect 查看
命令
> docker run --name some-nginx2 -v html:/usr/share/nginx/html -d nginx
- 结果
- 容器启动成功
- 在 volume 的默认路径下, 创建了一个 volume
- 名为 html
- html 与 容器的路径 绑定成功
- 验证
- docker volume ls
- 可以查看到新的 volume
- docker volume ls
- 其他
- volume 名称
如果不指定, 会随机生成
> docker run --name some-nginx2 -v /usr/share/nginx/html -d nginx
- volume 权限
- 权限
- 只读
- 读写
指定
# 默认为 rw -v html:/usr/share/nginx/html[:ro|:rw]
- 权限
- volume 名称
3. volumes-from
- 概述
- 创建新容器时, 使用和另一个容器相同的挂载策略
- 场景
- 容器 d1
- 有自己的卷
- 容器 d2
- 继承 d1 的卷
- 容器 d1
- 命令
- d1
- 略
d2
> docker container run --name d2 --volumes-from d1 -d nginx
- d1
- 埋个坑
- 参考里创建 d1 的时候, 没有带 -v
- 创建 d2 也没问题
- docker container inspect 查看时, 也能正确查看到
- 但是这个继承, 到底有没有意义
- 还是说, 容器起来的时候, 临时读写层, 也被视为了 volume?
- volume 的生命周期
- 例子里说了这么个情况
- d1 创建, 有了 volume v1
- d2 volumes-from 了 d1, 使用了 同样的 v1
- d1 关闭了, volume 不受影响
- d2 关闭, 没有容器使用 v1,
- 然后 v1 的生命周期结束了
- 疑问
- 什么是 volume 的生命周期
- 我试过所有容器都结束, 甚至删掉的情况
- -v 创建的卷, 依然存在
- 那结束, 又是怎么个回事
- 例子里说了这么个情况
- 参考里创建 d1 的时候, 没有带 -v
2. docker volume
1. 概述
- docker volume 命令
- 有了上面的认识, 后续的理解, 会方便很多
2. 命令们
- ls
- 概述
- 查看卷列表
命令
# 返回 driver 信息 和 volume 的名称 > docker volume ls
- 概述
- inspect
- 概述
- 查看卷详情
命令
# 稍微详细的信息, 不细说了 > docker volume inspect <volumeName>
- 概述
- create
- 概述
- 创建卷
命令
# 在默认位置, 创建一个名为 volumeName 的卷 # 卷 不能重名 # 创建完之后, 可以用 volumeName 在 创建容器时挂载 > docker volume crreate <volumeName>
- 概述
- rm
- 概述
- 删除卷
命令
# 删除卷 > docker volume rm <volumeName>
- 概述
- prune
- 概述
- 删除 闲置卷
命令
# 删除没有挂载的卷 > docker volume prune
- 概述
ps
- ref
- docker 容器与容器云
- 问题
- 这本书没把 bind 和 volume 区分得很开
- 问题
- Docker学习笔记(6)——Docker Volume
- advantage
- 区分了 bind mount 和 volume
- disadvantage
- 没有 ref 作为支持
- advantage
- docker 入门 —— docker容器数据卷volumes-from
- docker 容器与容器云
- 问题1: 是否有 mount 之类的命令
- 条件
- 运行之中
- 条件
- 问题2: 上面提到的一些问题
- 概述
- 需要验证
- 概述
以上是关于Docker - 命令 - volume 相关的主要内容,如果未能解决你的问题,请参考以下文章