基于Gluster分布式实现docker存储卷

1.安装配置glusterfs
基础配置:
centos7 关闭firewalld/selinux
配置/etc/hosts和hostname

1 [[email protected] ~]# cat /etc/hosts
2 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
3 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
4 192.168.138.130 glus1
5 192.168.138.187 glus2
6 192.168.138.188 glus3

安装glusterfs

1  yum -y install centos-release-gluster
2  yum --enable repo=centos-gluster*-test install glusterfs-server
3  yum --enablerepo=centos-gluster*-test install glusterfs-server
4  glusterfs -V
5  systemctl enable glusterd
6  systemctl start glusterd

准备存储盘

 1  fdisk /dev/sdb
 2  mkfs.xfs -i size=512 /dev/sdb1
 3  mkdir /gluster
 4  echo ‘/dev/sdb1 /gluster/ xfs defaults 1 2‘ >> /etc/fstab
 5  mount -a && mount
 6  在glus1
 7  gluster peer probe glus2
 8  gluster peer probe glus2
 9  systemctl status glusterd
10  gluster peer status
11  mkdir /gluster/docker

glusterfs 配置券

1 gluster volume create docker replica 3 glus1:/gluster/docker glus2:/gluster/docker glus3:/gluster/docker
2 gluster volume start docker
3 gluster volume set docker nfs.disable off
4 mount -t gluterfs glus1:/docker /mnt/mount -t glusterfs glus1:/docker /mnt/

测试 glusterfs 略

安装docker

1 sudo yum remove docker  docker-common docker-selinux docker-engine
2 sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4 yum list docker-ce --showduplicates | sort -r
5 yum -y install docker-ce.x86_64-17.03.0.ce
6 sudo yum install docker-ce-17.12.0.ce
7 systemctl start docker
8 systemctl enable docker

安装插件、配置测试

 1 docker plugin install sapk/plugin-gluster
 2 systemctl start docker
 3 docker plugin ls
 4 docker volume create --driver sapk/plugin-glusterv:1.0.7-3 --opt voluri="glus1,glus2,glus3:docker" --name houpj
 5 docker volume ls
 6 docker pull ubuntu
 7 [[email protected] ~]# docker volume create --driver sapk/plugin-gluster:v1.0.7-3 --opt voluri="glus1,glus2.glus3:docker" --name houpj
 8 [[email protected] ~]# docker volume ls
 9 DRIVER                         VOLUME NAME
10 sapk/plugin-gluster:v1.0.7-3   fuck
11 sapk/plugin-gluster:latest     houpj
12 [[email protected] ~]# docker run -v houpj:/mnt --rm -ti ubuntu
13 [email protected]:/# ls
14 bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
15 [email protected]:/mnt# echo 123 >tttt
16 [[email protected] ~]# cat /gluster/docker/tttt
17 123
18 排查sapk/plugin-gluster一定要v1.0.7-3,latest 有bug 官方解释:https://github.com/sapk/docker-volume-gluster/issues/43

原文地址:https://www.cnblogs.com/Honeycomb/p/10145547.html

时间: 2024-08-01 01:37:38

基于Gluster分布式实现docker存储卷的相关文章

Docker之七---Docker存储卷与容器卷详解

1.存储卷介绍 1.1 背景 (1)docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加而成,启动容器时,docker会加载只读镜像层并在镜像栈顶部加一个读写层: 如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件版本仍然存在,只是已经被读写层中该文件的副本所隐藏,此即“写时复制(COW)”机制. 描述:如果一个文件在最底层是可见的,如果在layer1上标记为删除,最高的层是用户看到的Layer2的层,在layer0上的文件

Docker存储卷

docker存储卷: docker容器卷的使用方式: 1 Docker 管理卷: docker run -it --name [名称] -v [docker内部的卷] [镜像名称] 具体使用: docker run -it --name testvolume -d -v /data/mydata 75835a67d134 查看存储卷映射的目录: 命令:docker inspect f878a628f152 "Mounts": [ { "Type": "vo

docker存储卷篇

在之前的文章中,我们说过,容器的服务如果需要提供给外部访问,需要把端口映射出来.docker的数据存储卷也是一样的道理,我们在使用docker的时候,有些应用是需要保存数据的,这些需要保存数据的应用就可以把docker容器内的数据目录映射到宿主机上,如果没有指定,写入的数据会存储在docker的联合挂在存储系统上(性能低下),如果指定了挂载的目录(这里是/data),则可以绕过docker的文件系统,直接写在宿主机(或其他文件系统,如:nfs)上,如下图:上面的/data目录也又两种形式,一种是

Docker 存储卷

为何需要存储卷 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,这个就是写时复制(COW)机制. 数据存储的问题 Docker 容器数据的存储,存在以下问题: 存储于联合文件系统中,不易于宿主机访问 容器间数据共享不便 删除容器其数据会丢失 关闭并重启容器,容器的数据不受影响.但删

Docker第五回(Docker存储卷)

一.Docker底层存储机制介绍 对于Docker来讲,它作为容器运行的底层引擎,在组织和运行其容器时,每个容器内运行一个程序及子程序,容器启动时依赖于底层可能不止一层的只读镜像联合挂载启动而成.它底层能够存储此类分层构建并联合挂载镜像的文件系统包含AUFS.Overlayfs2.devmapper文件系统.最后一定要在最上层构建一个可写层.对于此可写层来说,所有在容器中所执行的写操作(对数据的修改.对内容的修改),都是保存在最上层的可写层.对下层内容的增删改操作我们需要使用“写时复制”(COW

(转)CentOS7.4环境下搭建--Gluster分布式集群存储

原文:https://blog.csdn.net/qq_39591494/article/details/79853038 环境如下:OS:Centos7.4x86_64IP地址如下: Daasbank1: 192.168.1.102---CentOS7.4x86_64 Daasbank2: 192.168.1.103---CentOS7.4x86_64 Daasbank3: 192.168.1.105---CentOS7.4x86_64 Client: 192.168.1.106---Cent

你必须知道的Docker数据卷(Volume)

本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.将Docker数据挂载到容器 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中: (1)volumes:Docker管理宿主机文件系统的一部分,默认位于 /var/lib/docker/volumes 目录中:(最常用的方式

理解Docker(8):Docker 存储之卷(Volume)

(1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 (6)若干企业生产环境中的容器网络方案 (7)Docker 存储 - AUFS (8)Docker 存储 - Volume 1. Docker volume 的几种形态 有状态容器都有数据持久化需求.前一篇文章中提到过,Docker 采

Kubernetes之存储卷

存储卷概述 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的状态)重新启动.其次,在 Pod 中同时运行多个容器时,这些容器之间通常需要共享文件.Kubernetes 中的 Volume 抽象就很好的解决了这些问题.在原docker环境中也有存储卷的概念,但docker环境的存储卷调度在宿主机上的目录,当docker重新创建的时候存储卷还会挂载统一宿主机上,但我们