Docker 数据管理

Docker 数据管理

  1. 容器管理数据的方式

ocker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式:

  • 数据卷(Volumes)
  • 挂载主机目录 (Bind mounts)
  1. 数据卷

    1. 是什么发?

      1. 一个可供一个或多个容器使用的特殊目录,它绕过 UFS
      2. 数据卷 可以在容器之间共享和重用
      3. 数据卷 的修改会立马生效
      4. 数据卷 的更新,不会影响镜像
      5. 数据卷 默认会一直存在,即使容器被删除
      6. 类似于Linux对目录文件进行mount,镜像中指定为挂载点的目录会被隐藏掉,能看到是挂载的数据卷。
  2. 创建一个数据卷

    [root@rbtnode1 ~]# docker volume create my-container_vol

    查看所有的 数据卷

    [root@rbtnode1 ~]# docker volume ls

    在主机里使用以下命令可以查看指定 数据卷 的信息

    [root@rbtnode1 ~]# docker volume inspect my-container_vol

  1. 启动一个挂载数据卷的容器

    1. 在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个 数据卷

    2. 创建一个名为 web 的容器,并加载一个 数据卷 到容器的 /webapp 目录

      1. docker run -d -P --name web --mount source="my-contariner_vol",target=/webapp training/webapp python app.py![1575590688473]
  2. 查看数据卷的具体信息

    在主机里使用以下命令可以查看 web 容器的信息

    $ docker inspect web
    
  3. 删除数据卷

    $ docker volume rm my-vol
    
  4. 数据卷的作用

有点类似我们Redis里面的rdb和aof文件

  ​	能干嘛
  ​		容器的持久化,不会自动删除,没有垃圾回收处理

  1. ​	docker rm -v		删除容器时一起删除数据卷

  2. 无主的数据卷可能会占据很多空间,要清理请使用以下命令

     ```bash
     $ docker volume prune
     ```

  3. 容器间继承+共享数据
     ​	数据卷
     ​		容器内添加
     ​			直接命令添加
     ​				命令
     ​					 docker run -it -v /宿主机绝对路径目录:/容器内目录      镜像名
     ​				查看数据卷是否挂载成功
     ​				容器和宿主机之间数据共享
     ​				容器停止退出后,主机修改后数据是否同步
     ​				命令(带权限)
     ​					 docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
     ​			DockerFile添加
     ​				根目录下新建mydocker文件夹并进入
     ​				可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
     ​				File构建
     ​				build后生成镜像
     ​					获得一个新镜像zzyy/centos
     ​				run容器
     ​				通过上述步骤,容器内的卷目录地址已经知道
     对应的主机目录地址哪??
     ​				主机对应默认地址
     ​			备注
     ​	数据卷容器
     ​		是什么
     ​		总体介绍
     ​			以上一步新建的镜像zzyy/centos为模板并运行容器dc01/dc02/dc03
     ​			它们已经具有容器卷
     ​				/dataVolumeContainer1
     ​				/dataVolumeContainer2
     ​		容器间传递共享(--volumes-from)
     ​			先启动一个父容器dc01
     ​				在dataVolumeContainer2新增内容
     ​			dc02/dc03继承自dc01
     ​				--volumes-from
     ​				命令
     ​					dc02/dc03分别在dataVolumeContainer2各自新增内容
     ​			回到dc01可以看到02/03各自添加的都能共享了
     ​			删除dc01,dc02修改后dc03可否访问
     ​			删除dc02后dc03可否访问
     ​				再进一步
     ​			新建dc04继承dc03后再删除dc03
     ​			结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

posted on 2019-12-06 08:11  不浮泛  阅读(182)  评论(0编辑  收藏  举报

导航