Docker - 命令 - volume 相关

  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. 需要验证

原文地址:https://www.cnblogs.com/xy14/p/11888541.html

时间: 2024-07-31 12:51:38

Docker - 命令 - volume 相关的相关文章

12、《每天5分钟玩转Docker容器技术》学习-Docker命令之容器操作命令

a) Docker ps 命令 docker ps : 列出容器 docker ps [OPTIONS] -a :显示所有的容器,包括未运行的. -f :根据条件过滤显示的内容. --format :指定返回值的模板文件. -l :显示最近创建的容器. -n :列出最近创建的n个容器. --no-trunc :不截断输出. -q :静默模式,只显示容器编号. -s :显示总的文件大小. l 实例 列出所有在运行的容器信息. 列出最近创建的5个容器信息. 列出所有创建的容器ID. b) Docke

02 Docker 命令大全

Docker 命令大全 说明:此文章内容来自于 www.runoob.com 网站整合 : 容器生命周期管理 run start/stop/restart kill rm pause/unpause create exec 容器操作 ps inspect top attach events logs wait export port 容器rootfs命令 commit cp diff 镜像仓库 login pull push search 本地镜像管理 images rmi tag build

Docker命令查询

Docker命令查询 基本语法 docker [OPTIONS] COMMAND [arg...] 一般来说,Docker 命令可以用来管理 daemon,或者通过 CLI 命令管理镜像和容器.可以通过 man docker来查看这些命令. 选项 -D=true|false     使用 debug 模式.默认为 false. -H, --host=[unix:///var/run/docker.sock]: tcp://[host:port]来绑定或者 unix://[/path/to/soc

深入浅出Docker(二):Docker命令行探秘

1. Docker命令行 Docker官方为了让用户快速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的使用方法.但是由于Docker技术的快速发展,此交互式教程已经无法满足Docker用户的实际使用需求,所以让我们一起开始一次真正的命令行学习之旅.首先,Docker的命令清单可以通过运行docker ,或者 docker help 命令得到: $ sudo docker 在Docker容器技术不断演化的过程中,Docker的子命令已经达到34个之多,其中核心子命令(

Docker 命令行和后台参数

Docker官方为了让用户快速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的使用方法. Docker 命令行 下面对Docker的命令清单进行简单的介绍,详细内容在后续章节详细介绍.可以通过运行 docker ,或者 docker help 命令得到命令行的帮助信息(我们还是以 vmware 上的 coreos 为操作环境,如无特殊说明后文都采用这个环境): [email protected] ~ $ docker Usage: docker [OPTIONS] C

常用docker命令

常用命令1.  查看容器的root用户密码 docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1 因为Docker容器启动时的root用户的密码是随机分配的.所以,通过这种方式就可以得到redmine容器的root用户的密码了.2.    查看容器日志 docker logs -f <容器名orID> 3.    查看正在运行的容器 docker ps    docker ps -a为查看所有的容器,包括已经停止

docker managed volume - 每天5分钟玩转 Docker 容器技术(40)

docker managed volume 与 bind mount 在使用上的最大区别是不需要指定 mount 源,指明 mount point 就行了.还是以 httpd 容器为例: 我们通过 -v 告诉 docker 需要一个 data volume,并将其 mount 到 /usr/local/apache2/htdocs.那么这个 data volume 具体在哪儿呢? 这个答案可以在容器的配置信息中找到,执行 docker inspect 命令: docker inspect 21a

Docker 命令行和后台參数

Docker官方为了让用户高速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的用法. Docker 命令行 以下对Docker的命令清单进行简单的介绍,具体内容在兴许章节具体介绍. 能够通过执行 docker ,或者 docker help 命令得到命令行的帮助信息(我们还是以 vmware 上的 coreos 为操作环境,如无特殊说明后文都採用这个环境): [email protected] ~ $ docker Usage: docker [OPTIONS] CO

docker命令不需要敲sudo的方法

由于docker daemon需要绑定到主机的Unix socket而不是普通的TCP端口,而Unix socket的属主为root用户,所以其他用户只有在命令前添加sudo选项才能执行相关操作. 如果不想每次使用docker命令的时候还要额外的敲一下sudo,可以按照下面的方法配置一下. 创建一个docker组 $ sudo groupadd docker 添加当前用户到docker组 $ sudo usermod -aG docker $USER 登出,重新登录shell 验证docker命