Docker Swarm volume 数据持久化

摘要:
DockerSwarmvolume数据持久化卷将主机级目录映射到容器以实现数据持久化。它可以通过两种方式实现:卷默认模式:将工作节点和主机的数据同步到容器。

Docker Swarm volume 数据持久化

volume 是将宿主级的目录映射到容器中,以实现数据持久化。

可以用两种方式来实现:

  • volume 默认模式:工作节点宿主机数据同步到容器内。
  • volume NFS 共享存储模式:管理节点宿主同步到工作节点宿主,工作节点宿主同步到容器。

环境:

  • 系统:Centos 7.4 x64
  • 应用版本:Docker 18.09.0
  • 管理节点:192.168.1.79
  • 工作节点:192.168.1.78
  • 工作节点:192.168.1.77

volume 默认模式

1、管理节点:创建服务并添加数据卷

docker service create 
--mount type=volume,src=test,dst=/data 
--name v-hello 
busybox ping www.baidu.com
Docker Swarm volume 数据持久化第1张Docker Swarm volume 数据持久化第2张
# 创建服务
docker service create 
# 创建数据卷 type=volume,src=volume名称,dst=容器目录
--mount type=volume,src=test,dst=/data 
# 服务名
--name v-hello 
# 镜像
busybox 
# 容器内执行指令
ping www.baidu.com
命令解析

2、工作节点1或2:查看数据卷

Docker Swarm volume 数据持久化第1张Docker Swarm volume 数据持久化第4张
命令:docker volume ls
DRIVER              VOLUME NAME
local               test
查看数据卷
Docker Swarm volume 数据持久化第1张Docker Swarm volume 数据持久化第6张
命令:docker volume inspect test
[
    {
        "Driver": "local",
        "Labels": null,
         # 挂载宿主级目录
        "Mountpoint": "/var/lib/docker/volumes/test/_data",
        "Name": "test",
        "Options": {},
        "Scope": "local"
    }
]
查看数据卷详细信息

3、工作节点1或2:进入容器查看已创建数据卷

Docker Swarm volume 数据持久化第1张Docker Swarm volume 数据持久化第8张
命令:docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
019d6e42a364        busybox:latest      "ping www.baidu.com"   33 seconds ago      Up 31 seconds                           v-hello.1.m22z2lmpk4c27a9nsji6q0mog
查看启动容器
# 1、进入容器
docker exec -it 019d6e42a364 sh
# 2、容器内进入数据卷节点
/ # cd /data
/data #
# 3、容器外进入数据卷目录创建文件
 cd /var/lib/docker/volumes/test/_data
touch a.txt
# 4、容器内测试data目录数据 完成测试!
/data # ls
a.txt

volume NFS共享存储模式(推荐)

一、搭建NFS服务与客户端

1、管理节点:安装nfs服务端、配置nfs主配置文件、添加权限、启动

yum install nfs-utils -y
vim /etc/exports
# 添加目录给相应网段访问并添加读写权限 /opt/docker/wwwroot 192.168.1.0/24(rw)
# 创建共享目录,添加权限
mkdir -p /opt/docker/wwwroot
chmod 777 /opt/docker/wwwroot/
# 开启rpc服务
systemctl start rpcbind
# 启动服务并设置开机自启 systemctl start nfs

2、工作节点:安装nfs客户端、启动服务

yum install nfs-utils -y
# 开启rpc服务
systemctl start rpcbind
# 启动服务并设置开机自启
systemctl start nfs

二、NFS创建共享数据卷

1、管理节点:使用NFS共享存储创建服务及数据卷

docker service create --mount 'type=volume,src=nfs-test,dst=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=192.168.1.79:/opt/docker/wwwroot,"volume-opt=o=addr=192.168.1.79,vers=4,soft,timeo=180,bg,tcp,rw"' -p 8888:80 --name nginx nginx:1.12
Docker Swarm volume 数据持久化第1张Docker Swarm volume 数据持久化第10张
# 存储类型
type=volume,
# volume名称,
src=<VOLUME-NAME>,
# 目标路径
dst=<CONTAINER-PATH>,
# 官方配置
volume-driver=local,
# 服务类型
volumeopt=type=nfs,
# 官方配置参数
volume-opt=device=<nfs-server>:<nfs-path>,
"volume-opt=o=addr=<nfsaddress>,vers=4,soft,timeo=180,bg,tcp,rw"
命令解析

2、工作节点1或2:查看创建volumes

docker volume inspect nfs-test
[
    {
        "CreatedAt": "2018-11-08T15:16:35+08:00",
        "Driver": "local",
        "Labels": {},
        # 工作节点宿主级:数据存放位置
        "Mountpoint": "/var/lib/docker/volumes/nfs-test/_data",
        "Name": "nfs-test",
        "Options": {
             # 管理几点共享存储位置,与工作节点共享
            "device": "192.168.1.79:/opt/docker/wwwroot",
            "o": "addr=192.168.1.79,vers=4,soft,timeo=180,bg,tcp,rw",
            "type": "nfs"
        },
        "Scope": "local"
    }
]

3、工作节点1或2:测试数据卷同步

# 管理节点:/opt/docker/wwwroot 目录下创建test文件
touch test

# 工作节点:查看宿主节点宿主是否同步
ls /var/lib/docker/volumes/nfs-test/_data
test

# 工作节点:进入容器节点查看容器是否同步
docker exec -it 7429f79519eb sh
ls /usr/share/nginx/html
test

免责声明:文章转载自《Docker Swarm volume 数据持久化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇cpu高的问题的快速定位java--集合框架下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker运行爬虫代码

目录 docker 启动与停止 镜像制作 Dockerfile build 镜像 镜像操作 容器操作 docker运行爬虫代码 系统:Ubuntu 在项目根目录的同级目录下新建 Dockerfile 文件,这个Dockerfile就作为打包项目的配置文件 但是在这之前我还要做一件事情:就是将 python 依赖的一些基础环境打包成一个基础镜像,...

Docker开发环境预览

目录 1.1 开发环境预览 1.1.1 启动单个容器开发 1.1.2 从特定的分支或标签创建一个开发环境 2.1 分享你的开发环境 3.1 优缺点 docker在我们印象中完成的是开发完阶段的部署与协作共享功能,最近Docker推出了适合开发阶段的Docker环境容器开发。 1.1 开发环境预览 开发环境允许您与团队成员共享正在进行的代码,从...

docker学习(四)

一、Docker数据管理 在容器中管理数据主要有两种方式:1.数据卷(Data volumes)2.数据卷容器(Data volume containers) 1.数据卷数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:a.数据卷可以在容器之间共享和重用b.对数据卷的修改会立马生效b.对数据卷的更新,不会影响镜像d.卷会...

Docker安装各种服务

一. centos7设置固定IP 查看当前正在使用的网络情况 [root@localhost ~]# nmcli dev status 显示情况 : DEVICE TYPE     STATE   CONNECTION ens33   ethernet 连接的   ens33      lo     loopback 未托管   --  ...

机器学习--用朴素贝叶斯分类法辨别男女声音

和前面介绍到的kNN,决策树一样,贝叶斯分类法也是机器学习中常用的分类方法。贝叶斯分类法主要以概率论中贝叶斯定理为分类依据,具有很广泛的应用。本文通过一个完整的例子,来介绍如何用朴素贝叶斯分类法实现分类。主要内容有下:     1、条件概率与贝叶斯定理介绍     2、数据集选择及处理     3、朴素贝叶斯分类器实现     4、测试分类效果     5...

shell函数的调用执行

要想调用执行自己编写的shell文件中的函数,有如下方法: 比如,自己编写了一个test.sh文件如下, #===========test.sh: #! /bin/sh echo_line() {         echo date         echo "Wellcome to shell func!" } echo_line() {...