【Docker系列 Swarm】 swarm volume 数据持久化
Docker Swarm volume 数据持久化
volume 是将宿主级的目录映射到容器中,以实现数据持久化。
可以用两种方式来实现:
- volume 默认模式:工作节点宿主机数据同步到容器内。
- volume NFS 共享存储模式:管理节点宿主同步到工作节点宿主,工作节点宿主同步到容器。
准备文件
docker-compose.yml
version: "3.8"services:db:image: mysql:5.7environment:- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_passsecrets:- mysql_passvolumes:- data:/var/lib/mysqlvolumes:data:secrets:mysql_pass:file: mysql_pass.txt
mysql_pass.txt
$ more mysql_pass.txt
abc123
volume 默认模式
$ docker stack deploy --compose-file docker-compose.yml db
Creating network db_default
Creating secret db_mysql_pass
Creating service db_db
$ docker stack ls
NAME SERVICES ORCHESTRATOR
db 1 Swarm
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
rgbluvbnc4yq db_db replicated 1/1 mysql:5.7
$ docker service ps db_db
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
pvot7z2twld6 db_db.1 mysql:5.7 node2 Running Running 23 seconds ago
$
切换node2节点
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9de5c08ca72e mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp db_db.1.pvot7z2twld676au2vrlkgcf0
$ docker volume ls
DRIVER VOLUME NAME
local db_data
service创建在那个节点上,节点就会创建volume
volume NFS共享存储模式(推荐)
搭建NFS服务与客户端
- 管理节点:安装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
- 工作节点:安装nfs客户端、启动服务
yum install nfs-utils -y
# 开启rpc服务
systemctl start rpcbind
# 启动服务并设置开机自启
systemctl start nfs
NFS创建共享数据卷
- 管理节点:使用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=<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"‘ \
- 工作节点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"}
]
- 工作节点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】 swarm volume 数据持久化相关推荐
- Docker系列之五:Volume 卷的使用——以Redis为例
系列链接 Docker系列之一:Docker介绍及在Ubuntu上安装 Docker系列之二:Docker 入门 Docker系列之三:使用Docker镜像和仓库 Docker系列之四:Dockerf ...
- docker进阶篇(一) ---- Volume(数据卷)
引言 docker的镜像是由多个只读的文件系统叠加在一起形成的.当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层.这时如果修改正在运行的容器中已有的 ...
- Docker容器学习梳理 - Volume数据卷使用
Docker volume使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Docker中的数据可以存储在类似于虚拟机 ...
- 小白都能懂的 玩转docker系列之 Mysql同步数据
先搜索一个镜像 [root@xiaoxiao ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL ...
- docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别
前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结. 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此 ...
- Docker 的数据持久化项目实战
文章目录 官网 概述 初探Mysql镜像容器的数据存储 镜像准备:拉取mysql镜像 docker pull mysql 启动Mysql镜像 登录Mysql镜像容器 登录mysql 容器数据存储路径查 ...
- docker mysql初始化数据及数据持久化
1.初始化默认数据 我们经常会在mysql容器启动时,需要初始化一些数据库.数据表或者其他默认数据.其实mysql早已支持我们这种需求,具体方案如下: # 其实主要的做法就是重新build mysql ...
- Docker系列之八:在Dockerfile中使用多段构建Muti-stage build
系列链接 Docker系列之一:Docker介绍及在Ubuntu上安装 Docker系列之二:Docker 入门 Docker系列之三:使用Docker镜像和仓库 Docker系列之四:Dockerf ...
- Docker系列之三:使用Docker镜像和仓库
系列链接 Docker系列之一:Docker介绍及在Ubuntu上安装 Docker系列之二:Docker 入门 Docker系列之三:使用Docker镜像和仓库 Docker系列之四:Dockerf ...
最新文章
- [CODEVS 3147] 矩阵乘法 2
- 数据结构_树与二叉树(mindmap)+LeetCode_100.相同的树(C语言)
- pyqt5从子目录加载qrc文件_【JVM系统学习之路】一篇看懂类加载
- postfix+squirrelmail - rhat 5.4
- 使用python中的networkx来生成一个图
- 一家可能永远无法赚钱的公司,把自己卖了400亿
- Java类和对象(全网最细详解)
- mybatis报错:org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC
- minitools在win10上安装失败
- 自问自答系列——商城相关
- 【VCS】Git之无尽探索
- 小知识(3) 解决谷歌翻译问题(浏览器/IDEA)
- 第一个项目的大概流程
- pandas中的窗口对象(窗口函数)
- Java实现QQ邮箱登录,实现邮箱验证码三分钟失效,代码实现发送验证码和登录全过程思路。内附完整项目。
- mysql5.1 优化_7. 优化 - [ MySQL 5.1参考手册 ] - 在线原生手册 - php中文网
- 【加解密】在线加密工具推荐
- 传奇自定义技能栏技术分享-GEE
- 【华人学者风采】Xifeng Yan 加州大学圣巴巴拉分校
- Gallery2修改记录