博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker Swarm volume 数据持久化
阅读量:4635 次
发布时间:2019-06-09

本文共 3233 字,大约阅读时间需要 10 分钟。

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 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 volume lsDRIVER              VOLUME NAMElocal               test
查看数据卷
命令:docker volume inspect test[    {        "Driver": "local",        "Labels": null,         # 挂载宿主级目录        "Mountpoint": "/var/lib/docker/volumes/test/_data",        "Name": "test",        "Options": {},        "Scope": "local"    }]
查看数据卷详细信息

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

命令:docker psCONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES019d6e42a364        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/_datatouch a.txt
# 4、容器内测试data目录数据 完成测试!/data # lsa.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/wwwrootchmod 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
# 存储类型type=volume,# volume名称,src=
,# 目标路径dst=
,# 官方配置volume-driver=local,# 服务类型volumeopt=type=nfs,# 官方配置参数volume-opt=device=
:
,"volume-opt=o=addr=
,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/_datatest# 工作节点:进入容器节点查看容器是否同步docker exec -it 7429f79519eb shls /usr/share/nginx/htmltest

 

转载于:https://www.cnblogs.com/xiangsikai/p/9938670.html

你可能感兴趣的文章
popStar手机游戏机机对战程序
查看>>
hadoop2.4.1集群搭建
查看>>
Android采用Application总结一下
查看>>
ORA-00942:表或视图不存在(低级错误)
查看>>
Java Web项目结构
查看>>
PAT-1060 Are They Equal (科学计数法)
查看>>
lambda表达式树
查看>>
OpenCV YUV 与 RGB的互转(草稿)
查看>>
「Django」rest_framework学习系列-用户认证
查看>>
二次注入原理及防御
查看>>
要过一遍的博客列表
查看>>
栈和队列的操作
查看>>
会话记住已登录功能
查看>>
detection in video and image
查看>>
Linux内核分析——可执行程序的装载
查看>>
儿子和女儿——解释器和编译器的区别与联系
查看>>
第一阶段冲刺3
查看>>
2014百度面试题目---“求比指定整数大且最小的不重复数”解答
查看>>
父类引用指向子类对象
查看>>
linux epoll用法
查看>>