1. 概述

    1. docker volume 命令
  2. 背景

    1. docker 容器的存储, 通常需要独立于镜像
    2. docker volume 就是负责这块的命令

1. 写在 docker volume 之前

  1. 概述

    1. docker run 与 volume 相关的介绍
  2. 背景

    1. 其实在使用 docker [container] run 的时候, 我们已经在使用 volume 了
  3. volume

    1. 概述

      1. 类似

        1. linux 里的 卷
        2. windows 里的 盘
    2. 作用

      1. 对接其他设备
      2. 拓展存储空间
      3. 隔离存储区域
      4. 对数据的迁移, 复用, 也有支持

1. 首先, 这个不是 volume

  1. 概述

    1. docker run -v 中, 本地目录 与 容器路径 对接, 不是 volume
  2. 命令

    > docker run --name some-nginx1 -v $(pwd)/html:/usr/share/nginx/html -d nginx
  3. 结果

    1. 容器成功启动
    2. 容器的 '/usr/share/nginx/html' 目录, 与 宿主机 的 '$(pwd)/html' 目录, 成功关联
    3. 但是
      1. 并没有创建 volume
  4. 验证

    1. docker container inspect

      1. HostConfig 下

        1. Volumes 字段, 值为 null
    2. docker volume ls

      1. 无法查到 新的 volume
  5. 特性

    1. 触发

      1. 填写路径时, 需要用以下方式触发

        1. /
        2. ~/
    2. 路径

      1. host 上如果不存在, 主动创建
      2. container 上如果不存在, 主动创建
    3. 覆盖

      1. 如果冲突, 则以 host 为准

2. 然后, 我们开始使用 volume

  1. 概述

    1. 在 docker run 中使用 volume
  2. 位置

    1. 路径

      # 默认位置
      /var/lib/docker/volumes
      # 具体位置, 可以通过 docker container inspect 查看
  3. 命令

    > docker run --name some-nginx2 -v html:/usr/share/nginx/html -d nginx
  4. 结果

    1. 容器启动成功
    2. 在 volume 的默认路径下, 创建了一个 volume
      1. 名为 html
    3. html 与 容器的路径 绑定成功
  5. 验证

    1. docker volume ls

      1. 可以查看到新的 volume
  6. 其他

    1. volume 名称

      1. 如果不指定, 会随机生成

        > docker run --name some-nginx2 -v /usr/share/nginx/html -d nginx
    2. volume 权限
      1. 权限

        1. 只读
        2. 读写
      2. 指定

        # 默认为 rw
        -v html:/usr/share/nginx/html[:ro|:rw]

3. volumes-from

  1. 概述

    1. 创建新容器时, 使用和另一个容器相同的挂载策略
  2. 场景

    1. 容器 d1

      1. 有自己的卷
    2. 容器 d2
      1. 继承 d1 的卷
  3. 命令

    1. d1

    2. d2

      > docker container run --name d2 --volumes-from d1 -d nginx
  4. 埋个坑

    1. 参考里创建 d1 的时候, 没有带 -v

      1. 创建 d2 也没问题
      2. docker container inspect 查看时, 也能正确查看到
      3. 但是这个继承, 到底有没有意义
        1. 还是说, 容器起来的时候, 临时读写层, 也被视为了 volume?
    2. volume 的生命周期

      1. 例子里说了这么个情况

        1. d1 创建, 有了 volume v1
        2. d2 volumes-from 了 d1, 使用了 同样的 v1
        3. d1 关闭了, volume 不受影响
        4. d2 关闭, 没有容器使用 v1,
        5. 然后 v1 的生命周期结束了
      2. 疑问
        1. 什么是 volume 的生命周期
        2. 我试过所有容器都结束, 甚至删掉的情况
          1. -v 创建的卷, 依然存在
          2. 那结束, 又是怎么个回事

2. docker volume

1. 概述

  1. docker volume 命令

    1. 有了上面的认识, 后续的理解, 会方便很多

2. 命令们

  1. ls

    1. 概述

      1. 查看卷列表
    2. 命令

      # 返回 driver 信息 和 volume 的名称
      > docker volume ls
  2. inspect

    1. 概述

      1. 查看卷详情
    2. 命令

      # 稍微详细的信息, 不细说了
      > docker volume inspect <volumeName>
  3. create

    1. 概述

      1. 创建卷
    2. 命令

      # 在默认位置, 创建一个名为 volumeName 的卷
      # 卷 不能重名
      # 创建完之后, 可以用 volumeName 在 创建容器时挂载
      > docker volume crreate <volumeName>
  4. rm

    1. 概述

      1. 删除卷
    2. 命令

      # 删除卷
      > docker volume rm <volumeName>
  5. prune

    1. 概述

      1. 删除 闲置卷
    2. 命令

      # 删除没有挂载的卷
      > docker volume prune

ps

  1. ref

    1. docker 容器与容器云

      1. 问题

        1. 这本书没把 bind 和 volume 区分得很开
    2. Docker学习笔记(6)——Docker Volume
      1. advantage

        1. 区分了 bind mount 和 volume
      2. disadvantage
        1. 没有 ref 作为支持
    3. docker 入门 —— docker容器数据卷volumes-from
  2. 问题1: 是否有 mount 之类的命令

    1. 条件

      1. 运行之中
  3. 问题2: 上面提到的一些问题

    1. 概述

      1. 需要验证
  4. 问题3: 卷能独立于文件系统

    1. 概述

      1. 在书上看到有书这么说, 但是我想不明白
      2. 我所创建的卷, 都是在本地, 文件系统, 是由 /var 那个盘决定的
      3. 如果要触发, 需要什么条件
        1. 将 /var 挂载为其他目录
        2. 指定 卷存放的位置, 到其他的文件系统
    2. 感觉是个坑, 以后得填上

Docker - 命令 - docker volume的更多相关文章

  1. 掌握Docker命令-Docker for Web Developers(4)

    1.管理镜像命令 获取镜像 docker push ubuntu:14:04 查看镜像列表 docker images 重命名image docker tag IMAGE-NAME NEW-IMAGE ...

  2. Docker - 命令 - docker network

    概述 docker network 命令 背景 newwork 是 docker 的一种资源 经常会使用 需要整理命令 1. 引入 概述 docker run 时, 将容器端口映射到宿主机 场景 启动 ...

  3. Docker - 命令 - docker container

    概述 整理 docker 容器的命令 1. 分类(25个) 查看 ls diff logs inspect port stats top 生命周期 pause prune create kill re ...

  4. Docker - 命令 - docker image

    概述 docker 客户端操控 镜像 1. 分类 概述 1 简单对 命令 做一些分类 分类 查看 ls inspect history 与 dockerhub 交互 pull push 导出 & ...

  5. Docker 0x08: Docker 命令

    目录 Docker 命令 run 与 start 区别 docker 进程相关命令 Restful API Docker 命令 docker命令容易混淆几个 run 与 start 区别 run: 会 ...

  6. 容器版jenkins安装并且实现使用宿主机docker命令,采用的是docker outside deocker,带jdk、添加maven、git

    docker版jekins使用宿主机docker命令 docker版jekins安装,实现CI/CD,也就是实现在容器里面使用宿主机docker命令,这样方式为:docker outside deoc ...

  7. Docker学习のDocker的简单应用

    一.常见基本docker命令 docker是在一个linux虚拟机上运行的(对于windows来说),打开Docker quickStart terminal,就连街上了docker的 daemon ...

  8. 你可能不知道的 docker 命令的奇淫怪巧

    你可能不知道的 docker 命令的奇淫怪巧 Intro 介绍并收录一些可能会用到的一些简单实用却很少有人用的 docker 命令 dangling images build 自己的 docker 镜 ...

  9. Docker 命令查询

    Docker — 从入门到实践 Docker 命令查询 基本语法 Docker 命令有两大类,客户端命令和服务端命令.前者是主要的操作接口,后者用来启动 Docker Daemon. 客户端命令:基本 ...

随机推荐

  1. linux - 异常:安装包冲突 conflicts with

    问题描述 解决方案 删除冲突的包 命令格式:yum -y remove 包名 yum -y remove httpd24u yum -y remove httpd24u-tools

  2. TCL namespace

    命名空间可从Tcl 8.0版开始使用.引入命名空间之前,有一个全局范围.现在有了命名空间,我们可以分区全局范围. 创建命名空间: 结果:33 嵌套命名空间: 结果: test1 test2 导入命名空 ...

  3. Mac下Charles的安装和配置

    一.安装与破解 官网下载,破解方法参考其他,此处略 二.配置 1.电脑端安装 Charles 的根证书 注意:此时钥匙串默认为不信任,需设置为始终信任 2.配置代理:勾选enable transpre ...

  4. LINUX使用SSH远程终端时,如何将运行时间长的程序在后台挂起,下次SSH登陆时继续使用同一个SHELL?

    我在某个平台上购买了一个云服务器,LINUX操作系统无图形化界面,硬盘空间较小.虽然在平台上可以通过其自带网页版VNC界面登陆SHELL进而操控云主机,但是每次需要操控都得打开网页登陆进平台,然后再进 ...

  5. mysql远程链接(可以在服务器上配置然后在本地连接远程服务器)

    ps:如果一下的连接不成功原因:一定要关闭windows防火墙或者linux的防火墙 1.在服务器端授权(黄色标记的地方第一个是用户名,第二个的意思是可以远程连接,第三个是密码) GRANT ALL  ...

  6. Princeton Landmarks in Mathematics and Physics

    郎兰茲主页下载:http://10.12.0.10/sunsite.ubc.ca/DigitalMathArchive/Langlands/pdf/?mqcreq=1 http://10.12.0.1 ...

  7. linq和扩展方法

    c#的扩展方法 1.必须是在一个非嵌套.非泛型的静态类中的静态方法 2.至少一个参数,第一个参数附加this,不能有其他修饰符如out.ref 3.第一个参数不能是指针类型 上面例子是自定义的一个扩展 ...

  8. Linux package installation: deb and rpm

    一般来说著名的 Linux 系统基本上分两大类: RedHat 系列:Redhat.Centos.Fedora 等 Debian 系列:Debian.Ubuntu 等 Dpkg (Debian系): ...

  9. postgreSQL生成建表语句

    参考博文:https://blog.csdn.net/xiaofengtoo/article/details/84395199 修复了其函数中的bug,支持生成包含:字段(支持数组类型字段).约束.索 ...

  10. Redis 数据结构的底层实现 (一) RealObject,embstr,sds,ziplist,quicklist

    一.realObject Redis使用 string list zset hash set 五大数据类型来存储键和值.在每次生成一个键值对时,都会生成两个对象,一个储存键一个储存值.redis定义了 ...