Docker Swarm(四)Volume 数据(挂载)持久化
前言
为了获得最佳的性能和可移植性,应该避免将重要数据直接写入容器的可写层,而应使用数据卷或绑定挂载。
可以为集群中的服务创建两种类型的挂载,数据卷挂载(volume mounts)或绑定挂载(bind mounts)。
无论使用哪种类型的挂载,在创建服务时使用 --mount 标志进行配置,或者在更新服务时使用 --mount-add 或 --mount-rm 标志。如果不指定一个类型,默认类型是数据卷挂载。

注:tmpfs mount 仅可用于独立容器,不能在 Docker Swarm Service 中使用,故此处不介绍。
一、数据卷挂载
数据卷是在主机上的持久化存储,即使容器删除,也不会影响数据卷。
使用 docker volume create 命令创建一个volume:
docker volume create --name cwxvolume
使用 docker volume ls 命令查看volume列表:
docker volume ls

创建服务时使用创建好的volume挂载目录:
docker service create --name masl -e TZ="Asia/Shanghai" --network mrp_net --mount type=volume,src=cwxvolume,dst=/home/mppay/logs/masl --replicas 2 -p 8081:8080 172.16.99.2:40305/masl:dev-yc-34
参数src写成source也可以;dst表示容器内的路径,也可以写成destination
使用 docker service ps 命令查看服务情况:
docker service ps masl

发现分别在 manager-node 和 node1 节点上都创建了 masl 任务。
登陆 manager-node 服务器,使用 docker ps -a 命令查看容器运行情况:
docker ps -a

再使用 docker exec 进入容器:
docker exec -ti f820be6cf958 /bin/bash

发现,在容器内部的 /home/mppay/logs/masl 目录下有一个 masl.log文件,然后输入exit命令退出容器。
使用 docker volume inspect 命令查看挂载详细信息
docker volume inspect cwxvolume

进入上面指定的目录:
cd /var/lib/docker/volumes/cwxvolume/_data
ls

发现宿主机上也有这个文件。
二、绑定挂载
绑定挂载是调度程序为该任务部署容器时主机的文件系统路径,Docker 将路径挂载到容器中。在 Swarm 为任务初始化容器之前,该文件系统路径必须存在。
使用以下命令创建服务:
docker service create --name masl -e TZ="Asia/Shanghai" --network mrp_net --mount type=bind,source=/usr/local/tomcal_masl/logs,destination=/home/mppay/logs/masl --replicas 2 -p 8081:8080 172.16.99.2:40305/masl:dev-yc-34
其中,参数destination表示容器里面的路径,source表示本地硬盘路径
重要:虽然绑定挂载能用,但是也有可能导致一些问题:
1) 如果你挂载了一个主机路径到你的服务容器中,那么这个路径必须存在于 Swarm 集群中的每一个节点。Docker Swarm 调度器会把容器调度到任何满足资源可用性和满足你特定约束、位置偏好的节点上。
2) 如果运行中的容器变得不健康或者不可用,那么 Docker Swarm 调度器可能会随时重新安排它。
3) 主机绑定挂载是完全不可移植的。当你使用绑定挂载时,不能保证你的应用在开发中的运行方式与在生产中的运行方式相同。
总结
1) 挂载volume后,宿主机和容器之间就可以通过volume进行双向实时同步.2) 如果replicas是多份,则每个节点宿主机上都会有一个volume路径,即每个节点宿主机的/var/lib/docker/volumes/cwxvolume/_data和分布到它上面的容器里的/home/mppay/logs/masl进行实时同步.Docker Swarm(四)Volume 数据(挂载)持久化的更多相关文章
- Redis 小白指南(四)- 数据的持久化保存(草稿)
Redis 小白指南(四)- 数据的持久化保存 简介 因为 redis 将数据保存在内存中,很容易诱发的一个问题就是,程序崩溃或服务器重启等情况如何保证数据的正常存储. 当我们以 redis 作为主数 ...
- docker安装mysql5.7 数据挂载
docker安装mysql5.7,并数据卷挂载到主机 # docker 中下载 mysql docker pull mysql:5.7 #启动 docker run --name mysql3306 ...
- 记录 Docker 的学习过程 (数据挂载)
docker 存储篇 容器中的存储是分层的, 在容器中,如果我们要创建一个文件,会在文件的最上层(可写层)创建 容器中内置的文件,默认来讲是只读的,只有自己创建的文件才是可写状态 比如说 /etc/p ...
- Docker Swarm应用--lnmp部署WordPress
一.简介 目的:使用Docker Swarm 搭建lnmp来部署WordPress 使用Dockerfile构建nginx.php镜像 将构建的镜像上传docker私有仓库 使用volume做work ...
- 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障
3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...
- Docker Swarm volume 数据持久化
Docker Swarm volume 数据持久化 volume 是将宿主级的目录映射到容器中,以实现数据持久化. 可以用两种方式来实现: volume 默认模式:工作节点宿主机数据同步到容器内. v ...
- Docker Swarm bind 数据持久化
Docker Swarm bind 数据持久化 bind:主要将工作节点宿主级文件或目录,同步挂载到容器中. 环境: 系统:Centos 7.4 x64 应用版本:Docker 18.09.0 管理节 ...
- Docker容器学习梳理 - Volume数据卷使用
之前部署了Docker容器学习梳理--基础环境安装,接下来看看Docker Volume的使用. Docker volume使用 Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker ...
- Docker入门与应用系列(四)数据卷管理
一.介绍 Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(译者注:镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存 ...
随机推荐
- 2-fabric网络搭建流程
目录 一.示例网络 下面开始一步步的搭建和叙述上述过程 二.创建网络 三.添加网络管理员 四.定义联盟 五.为联盟创建通道 六.节点和账本 七.应用程序和智能合约链码 八.完成网络 简化视觉词汇表 九 ...
- Linux 以非root用户安装zsh&配置on my zsh
此文章参考以下三篇文章,如有侵权请联系 Linux非root用户安装zsh, 并用oh-my-zsh进行配置 在没有sudo权限的Linux服务器下安装oh-my-zsh 不使用root权限安装zsh ...
- HMS Toolkit助力开发者高效集成HMS Core
当你的应用想集成华为HMS Core服务和上线华为应用市场,或当你已经开发了一个Android应用并集成了第三方移动服务,需要迁移使用HMS Core服务和上线华为应用市场的时候,如何快速.便捷.高效 ...
- Firefox 启动带有配置信息
若不设置进行下述配置,那么 webdriver 每次启动火狐浏览器,默认都是一个不太有任何插件的浏览器被启动. 通过配置的方式,指定一个浏览器设置来启动,就可以使用以前安装的插件或配置信息了. 步骤一 ...
- elasticsearch jvm优化
测试环境elasticsearch jvm 4G jdk1.8 [serveradm@test-log-server elasticsearch]$ java -version java versio ...
- 工厂模式之简单工厂模式,head first设计模式
简单设计模式比较简单,15分钟的时间,跟着我做,十几分钟学会简单设计模式,开始吧: 1.使用new实例化一个对象时,你肯定知道这种代码缺少弹性,绑定着具体的类会导致代码更加脆弱,简单工厂模式就是针对接 ...
- LA3602DNA序列
题意: 给你一个一些DNA序列(只有ACGT)然后让你构造一个序列,使得所有的序列到他的Hamming距离最小,所有的序列包括构造的序列长度都是N,Hamming表示两个序列的不同字符位置个 ...
- Nessus扫描器的使用
目录 Nessus Scans Settings 一个基本扫描的建立 自定义扫描策略 Nessus的高级扫描方法 Nessus Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组 ...
- [LeetCode每日一题]81. 搜索旋转排序数组 II
[LeetCode每日一题]81. 搜索旋转排序数组 II 问题 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 & ...
- properties和yml进行对比
properties和yml进行对比 概念 springboot支持两种格式的配置文件,一种是yml,一种是properties,默认的文件名是application.properties或者appl ...