Docker - 命令 - 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
特性
触发
- 填写路径时, 需要用以下方式触发
- /
- ~/
- 填写路径时, 需要用以下方式触发
路径
- 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 的时候, 没有带 -v
- 创建 d2 也没问题
- docker container inspect 查看时, 也能正确查看到
- 但是这个继承, 到底有没有意义
- 还是说, 容器起来的时候, 临时读写层, 也被视为了 volume?
volume 的生命周期
- 例子里说了这么个情况
- d1 创建, 有了 volume v1
- d2 volumes-from 了 d1, 使用了 同样的 v1
- d1 关闭了, volume 不受影响
- d2 关闭, 没有容器使用 v1,
- 然后 v1 的生命周期结束了
- 疑问
- 什么是 volume 的生命周期
- 我试过所有容器都结束, 甚至删掉的情况
- -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: 上面提到的一些问题
- 概述
- 需要验证
- 概述
问题3: 卷能独立于文件系统
概述
- 在书上看到有书这么说, 但是我想不明白
- 我所创建的卷, 都是在本地, 文件系统, 是由 /var 那个盘决定的
- 如果要触发, 需要什么条件
- 将 /var 挂载为其他目录
- 指定 卷存放的位置, 到其他的文件系统
感觉是个坑, 以后得填上
Docker - 命令 - docker volume的更多相关文章
- 掌握Docker命令-Docker for Web Developers(4)
1.管理镜像命令 获取镜像 docker push ubuntu:14:04 查看镜像列表 docker images 重命名image docker tag IMAGE-NAME NEW-IMAGE ...
- Docker - 命令 - docker network
概述 docker network 命令 背景 newwork 是 docker 的一种资源 经常会使用 需要整理命令 1. 引入 概述 docker run 时, 将容器端口映射到宿主机 场景 启动 ...
- Docker - 命令 - docker container
概述 整理 docker 容器的命令 1. 分类(25个) 查看 ls diff logs inspect port stats top 生命周期 pause prune create kill re ...
- Docker - 命令 - docker image
概述 docker 客户端操控 镜像 1. 分类 概述 1 简单对 命令 做一些分类 分类 查看 ls inspect history 与 dockerhub 交互 pull push 导出 & ...
- Docker 0x08: Docker 命令
目录 Docker 命令 run 与 start 区别 docker 进程相关命令 Restful API Docker 命令 docker命令容易混淆几个 run 与 start 区别 run: 会 ...
- 容器版jenkins安装并且实现使用宿主机docker命令,采用的是docker outside deocker,带jdk、添加maven、git
docker版jekins使用宿主机docker命令 docker版jekins安装,实现CI/CD,也就是实现在容器里面使用宿主机docker命令,这样方式为:docker outside deoc ...
- Docker学习のDocker的简单应用
一.常见基本docker命令 docker是在一个linux虚拟机上运行的(对于windows来说),打开Docker quickStart terminal,就连街上了docker的 daemon ...
- 你可能不知道的 docker 命令的奇淫怪巧
你可能不知道的 docker 命令的奇淫怪巧 Intro 介绍并收录一些可能会用到的一些简单实用却很少有人用的 docker 命令 dangling images build 自己的 docker 镜 ...
- Docker 命令查询
Docker — 从入门到实践 Docker 命令查询 基本语法 Docker 命令有两大类,客户端命令和服务端命令.前者是主要的操作接口,后者用来启动 Docker Daemon. 客户端命令:基本 ...
随机推荐
- 记录 Docker 的学习过程 (网络篇之跨主机互通)
下面从node3上操作node3# docker run -d -p 8500:8500 --name consul progrium/consul -server -bootstrap node3# ...
- Docker最全教程——从理论到实战(九)
使用Tencent Hub来完成CI 关于Tencent Hub Tencent Hub是腾讯出品的DevOps服务.主要提供多存储格式的版本管理,支持Docker Image.Binary.Helm ...
- Java Set集合的详解
一,Set Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复. 对象的相等性 引用到堆上同一个对象 ...
- JavaScript的Map和Set
JavaScript的Map和Set 1.map:映射(通过key获得value).增.删 2.set:增.删.判断是否包含某个元素 1. Map <!DOCTYPE html><h ...
- Java 面向对象编程 抽象类 抽象方法 abstract
抽象类 通过abstract定义的方法是抽象方法,它只有定义,没有实现.抽象方法定义了子类必须实现的接口规范: 定义了抽象方法的class必须被定义为抽象类,从抽象类继承的子类必须实现抽象方法: 如果 ...
- 在多租户(容器)数据库中如何创建PDB:方法2 克隆本地PDB
基于版本:19c (12.2.0.3) AskScuti 创建方法:克隆本地PDB(从本地其他PDB创建新的PDB) 对应路径:Creating a PDB --> Cloning --> ...
- 使用NSIS制作可执行程序的安装包
使用NSIS制作可执行程序的安装包: 1,NSIS下载地址:https://pan.baidu.com/s/1GzzQNXgAlJPJWgjBzVwceA 下载完成之后解压缩,打开安装程序,默认安装即 ...
- 微信小程序图片设置圆角进入页面闪动
transform变形 当我们通过某些行为触发页面进行大面积绘制的时候,浏览器由于没有事先准备,应付渲染够呛,于是掉帧,于是卡顿.而will-change则是真正的行为触发之前告诉浏览器:“我待会儿就 ...
- 记manjaro图形驱动删除后的一次补救
#一.前言 众所周知,NVIDIA的闭源驱动在Linux上的兼容性不是很好,再加上我不玩游戏,于是我就想卸载独显只留核显.我以为我装了独显和核显两种驱动,原本想直接删除独显驱动,没想到删除的是bumb ...
- python之路之生成器和的迭代器
生成器的基本原理 生成器实现xrange 迭代器