[docker]动态挂卷与数据卷管理

声明:

本博客欢迎转发,但请保留原作者信息!

博客地址:http://blog.csdn.net/halcyonbaby

内容系本人学习、研究和总结,如有雷同,实属荣幸!

动态挂卷

目前docker不支持动态挂卷。
有同事就提出,以下方法是否可行:
1. 将块设备通过ln链接到容器与host的映射目录。
2. 将块设备挂载到容器与host的映射目录。

以下是实验过程:
由于非特权无法看到/dev下的设备,因此ln链接实际是无效的。 同理,对于其他块设备,也是这样的。
当然,我们可以配置privileged,则可以看到这些设备。但是privileged本身存在很大的安全隐患。

code>
[[email protected] ~]# docker run --rm -t -i -v /home/test:/home/test centos:latest bash
[[email protected] /]# ls /home/test/
[[email protected] ~]# ln -s /dev/loop1 /home/test/loop1
[[email protected] ~]# ls /home/test/loop1  -l
lrwxrwxrwx. 1 root root 10 Jan 23 03:33 /home/test/loop1 -> /dev/loop1
[[email protected] /]# ls /home/test/ -l
total 0
lrwxrwxrwx. 1 root root 10 Jan 23 08:33 loop1 -> /dev/loop1

可以看到这种方法也是不行的。原因是容器的目录系统与host是隔离的。
因此即使映射到了容器中,在host中继续对映射目录镜像挂载操作,也不会影响容器内部。


[[email protected] ~]# docker run --rm -t -i -v /home/test:/home/test centos:latest bash
[[email protected] /]# ls /home/test/
a.txt
[[email protected] home]# touch /home/test/a.txt
[[email protected] home]# mount /dev/loop10 /home/test
[[email protected] home]# ls /home/test/
lost+found
[[email protected] /]# ls /home/test/
a.txt
[[email protected] home]# umount /home/test/
[[email protected] home]# ls /home/test
a.txt

那么有没有办法可以实现类似的目的呢。这篇blog(http://dockerone.com/article/149)给出了解决办法。
据说docker正在开发类似的特性,希望能release吧。

数据卷管理

那么docker希望我们如何完成容器内数据的管理呢?有一篇用户文档(http://docs.dockers.com/userguide/dockervolumes/)进行了讲解。简单来说,通过数据卷或者数据卷容器进行管理。

数据卷

数据卷是特别设计的目录,绕过了容器的Union File System,向容器提供持久化数据和共享数据的能力。

  • 数据卷可以多个容器共享和重用
  • 数据卷独立于容器存在
  • 更新容器镜像,不影响数据卷
  • 数据卷的读写是直接的,绕过容器的Union File System 例子:
    
    $ docker run -t -i -v /test centos:latest bash
    $ docker run -t -i -v /home/test:/home/test centos:latest bash
    $ docker run -t -i -v /home/test/data.txt:/home/test/data.txt centos:latest bash
    

数据卷容器


$ docker run -d -v /data/ --name dbdata centos:latest bash
$ docker run -d --volume-from dbdata --name app centos:latest app

备份


$ docker run --volumes-from dbdata -v $(pwd):/backup busybox tar xvf /backup/backup.tar

参考:
1. docs.docker.com/userguide/dockervolumes 2. dockerone.com/article/149

时间: 2024-10-13 15:58:16

[docker]动态挂卷与数据卷管理的相关文章

Docker 学习笔记【3】 Docker 仓库、数据卷、数据卷容器,网络基础实操。高级网络配置学习

Docker 学习笔记[4] 高级网络配置实操,实战案例实验 =========================================================================== Docker 学习笔记[2] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,记录开始 =========================================================================== 被格式化的脚本内容: #开头代表

Docker 快速上手系列(4): 数据卷,数据卷容器的概念及相关操作

引子 有些时候,我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷 数据卷容器 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 卷会一直存在,直到没有容器使用 #(类似linux下的挂载(mount)) 创建数据卷 在用Docker ru

Docker基本控制命令(资源控制、数据卷及数据卷容器、镜像创建、端口映射、私有仓库)

一.资源控制 1.CPU使用率控制 限制该镜像本次建立的容器最大只能占总资源的10% docker run --cpu-quota 10000 centos 2.按比例分配 创建两个容器为c1和c2,若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为33.3%和66. 7% docker run -itd --name c1 --cpu-shares 512 centos(镜像名)docker run -itd --name c2 --cpu-shares 1024 centos

docker创建数据卷以及数据卷容器

docker容器管理有2中方式: 1:数据卷:类似Linux下目录挂载mount 2:数据卷容器:其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的 使用docker search xxx //xxx指的是搜索相应的镜像.搜索后根据自己需求进行pull 下载镜像 [email protected] :~# docker pull jdeathe/centos-ssh 查看pull后的镜像 [email protected] :~# docker images REPOSITORY    

Docker之数据卷和数据卷容器

数据卷是一个可供容器使用的特殊目录,可以在容器之间共享和重用,对数据卷的修改会马上生效,卷会一直存在直到没有容器使用,数据卷的使用类似于mount 数据卷容器就是一个普通的容器,可专门提供数据卷供其他容器挂载使用,可以在容器之间共享一些持续更新的数据 1:创建数据卷 利用镜像centos,创建一个名为tomcat的容器,并在后台以守护进程方式工作,且将本地的/b2b/目录挂在在新建立的tomcat容器的/test目录下 [email protected]:/home/zxl# docker ru

docker数据卷管理及网络基础配置

数据卷 数据卷容器 数据卷迁移数据 端口映射 容器间通信 数据卷的管理 当需要查看容器内应用产生的数据或者把容器内数据备份及多个容器数据共享.有两种方式,数据卷以及数据卷容器. 数据卷 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,特性如下: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新不会影响镜像 卷会一直存在,直到没有容器使用 其使用类似与mount操作. 在容器内创建一个数据卷 #docker run -d -P --name web -v /webapp

4.docker数据卷管理

生产过程中使用docker往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,因此就需要数据卷来做数据持久化 *数据卷:容器内数据直接映射到本地主机环境 数据卷的特性: 1)可以在容器之间共享和重用,容器间传递数据变得高效方便 2)对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作 3)对数据卷的更新不会影响镜像,解耦了应用和数据 4)卷会一直存在,直到没有容器使用,可以安全地卸载它 创建数据卷 docker run -it --name web -v ~/webapp:/w

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

docker容器的数据卷以及使用方式

            Docker容器的数据卷 想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的更改