docker存储卷
⑴ docker volume是什么意思
docker volume默认使用本地文件系统存储,不支持手动配置volume大小。但是目前docker volume是支持多种存储后端,支持列表:但直接支持存储空间大小目前好像并未实现。docker rbd驱动能够固定分配20GB的image供每个volume使用,但我认为要实现自定义大小其实并不难。完全可以通过-o传递额外参数,比如表示大小的size参数,存储后端可以根据size参数分配指定大小的存储。volume目前支持Flocker驱动,已经实现自定义大小,通过-o size参数指定,存储后端包括EBS、Cinder等。不过好像尚未实现直接管理cinder volume,不过已经有很多讨论device - Docker and Cinder, is it possible in openstack?,Persistent volumes with OpenStack · Issue #1958 · docker/machine · GitHub . 如果有需求,可以手动实现自己的存储驱动,支持自定义大小。
⑵ k8s怎么把容器里面的内容挂出来
普通Volume
最简单的普通Volume是单节点Volume。它和Docker的存储卷类似,使用的是Pod所在K8S节点的本地目录。
第二种类型是跨节点存储卷,这种存储卷不和某个具体的K8S节点绑定,而是独立于K8S节点存在的,整个存储集群和K8S集群是两个集群,相互独立。
跨节点的存储卷在Knetes上用的比较多,如果已有的存储不能满足要求,还可以开发自己的Volume插件,只需要实现Volume.go里定义的接口。如果你是一个存储厂商,想要自己的存储支持Knetes上运行的容器,就可以去开发一个自己的Volume插件。
2.persistent volume
它和普通Volume的区别是什么呢?
普通Volume和使用它的Pod之间是一种静态绑定关系,在定义Pod的文件里,同时定义了它使用的Volume。Volume是Pod的附属品,我们无法单独创建一个Volume,因为它不是一个独立的K8S资源对象。
而Persistent Volume简称PV是一个K8S资源对象,所以我们可以单独创建一个PV。它不和Pod直接发生关系,而是通过Persistent Volume Claim,简称PVC来实现动态绑定。Pod定义里指定的是PVC,然后PVC会根据Pod的要求去自动绑定合适的PV给Pod使用。
PV的访问模式有三种:
第一种,ReadWriteOnce:是最基本的方式,可读可写,但只支持被单个Pod挂载。
第二种,ReadOnlyMany:可以以只读的方式被多个Pod挂载。
第三种,ReadWriteMany:这种存储可以以读写的方式被多个Pod共享。不是每一种存储都支持这三种方式,像共享方式,目前支持的还比较少,比较常用的是NFS。在PVC绑定PV时通常根据两个条件来绑定,一个是存储的大小,另一个就是访问模式。
刚才提到说PV与普通Volume的区别是动态绑定,我们来看一下这个过程是怎样的。
这是PV的生命周期,首先是Provision,即创建PV,这里创建PV有两种方式,静态和动态。所谓静态,是管理员手动创建一堆PV,组成一个PV池,供PVC来绑定。动态方式是通过一个叫Storage Class的对象由存储系统根据PVC的要求自动创建。
⑶ docker 数据卷是什么意思
可以理解为mount,就是用来做容器内数据的本地化存储。
⑷ Docker能用分布式存储吗
3台virtualbox虚拟机,用来安装ceph集群,已用docker-machine安装上了docker,每台虚拟机虚拟创建一个5G的硬盘,用于存储osd数据,例如:/dev/sdb
1台客户端manager,客户端可以扩展至多台形成swarm集群
⑸ docker如何让容器卷内容实际存在于容器内部
你不指定任何的docker目录映射,即不指定-V参数,默认所有容器数据都存储在容器内部
⑹ docker数据卷共享会冲突吗
docker 容器启再通命令行难挂载存储卷mnt容器运行程要自工作空间执行 通步骤挂载: (1)use nsenter to mount the whole filesystem containing this volume on a temporary mountpoint
-
⑺ docker 容器启动后,还能通过命令行挂接存储卷么
docker 容器启动后,再通过命令行很难挂载一个存储卷。因为mnt在容器运行过程中要在自己的工作空间执行。
通过以下步骤可以挂载:
(1)use nsenter to mount the whole filesystem containing this volume on a temporary mountpoint;
(2)create a bind mount from the specific directory that we want to use as the volume, to the right location of this volume;
(3)umount the temporary mountpoint.