【云原生kubernetes从入门到实践系列教程 ] 四.docker volumes持久化

本文介绍了Docker数据卷的持久化原理和特性,通过挂载主机目录和MySQL数据卷实例,详细阐述了如何进行数据持久化。内容包括卷的创建、挂载和验证数据共享,是云原生kubernetes学习系列的一部分。
摘要由CSDN通过智能技术生成

基础教程

相关知识

我们要想docker容器像操作系统一样,永久的保留数据就必须把数据持久化,否则在容器损坏或更新的情况下无法加载之前数据,导致容器系统启动失败,若想持续保留数据,我们就要知道数据卷(data volumes)持久化。
数据卷(Data Volumes)是宿主机中的一个目录或文件,数据卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。当容器目录和数据卷目录绑定后,对方的修改会立即同步,一个数据卷可以被多个容器同时挂载,一个容器也可以被挂载多个数据卷。

数据卷特性
  • 数据卷可以在容器之间共享和重用,本地与容器间传递数据更高效
  • 对数据卷的修改会立马有效,在容器内部与本地目录均可对数据卷进行修改
  • 对数据卷的更新,不会影响镜像,对数据与应用进行了解耦操作
  • 卷会一直存在,直到没有容器使用

当然,以上纯属概念性存在,我们在今后的学习中,逐渐的明白这个东西是个啥,接下来我们进行实际演练

案例讲解

我们今天来新建2个容器,一个为之前的nginx,另一个准备新增一个mysql的容器。并可以随意更改配置文件,下面进入正题

1. 挂载主机目录
$ docker run --restart always --name nginx -d -v /opt:/opt -v /var/log:/var/log nginx:v1
  • docker run-- docker 运行容器命令
  • -p 8080:80 -- 宿主机和容器的映射端口
  • --restart always -- 出错或重启物理机器后总是自动重启
  • -d nginx:v1 -- 使用的镜像及版本
  • -v /opt:/opt -- 宿主机的路径和该路径在容器中的映射

通过以上操作,我们就可以在宿主机的/opt 中持续保持nginx 的所有文件,当然这个仅限于在容器的/opt中的文件,除这个路径之外的其他文件,仍旧无法永久保存。到这里我想大家应该基本明白这个所谓的卷是个啥东西了吧。

2. 挂载mysql目录

下面我们通过对常规数据库mysql,进行容器化部署,具体命令如下:

$ docker run -d -p 3306:3306 --name mysql -v /opt/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=test mysql:5.7
  • docker run -- docker 运行容器命令
  • -p 3306:3306 -- 宿主机和容器的映射端口
  • --restart always -- 出错或重启物理机器后总是自动重启
  • -d mysql:5.7 -- 使用的镜像及版本
  • -v /opt/mysql:/var/lib/mysql -- 宿主机的路径和该路径在容器中的映射
  • -e 参数映射,比如上面设置root账号的密码及数据库为test(固定写法)

在网内的其他机器上面可以telnet ip 3306 看是否正常,如果不正常,首先检查防火墙是否开启该端口,如果有其他问题可以私信我解决!
以上,就是我们今天所学习的内容,请多多练习。

使用volumes卷的基本命令

$ docker volume ls  # 查看当前卷
$ docker volume create my-vol  # 创建名为my-vol的卷
$ docker run --name nginx -d -v my-vol:/opt/my-vol nginx:v1
$ docker exec -ti nginx touch /opt/my-vol/a.txt # 在容器内创建a文件

验证数据共享

新建容器,同时挂载该卷,可实现数据共享

$ docker run --name -nginx2 -d -v my-vol:/opt/my-vol nginx:v1

------------------------------------------------------------------------------------------------------

课程链接

docker基础操作

【云原生kubernetes从入门到实践 ] 一.docker安装
【云原生kubernetes从入门到实践 ] 二.docker操作
【云原生kubernetes从入门到实践 ] 三.docker私有镜像源

【云原生kubernetes从入门到实践 ] 四.docker volumes 持久化

【云原生kubernetes从入门到实践 ] 五.docker网络介绍
【云原生kubernetes从入门到实践 ] 六.docker应用容器实践

k8s 基础操作

【云原生kubernetes从入门到实践 ] 一.k8s 集群介绍
【云原生kubernetes从入门到实践 ] 二.k8s 集群理解
【云原生kubernetes从入门到实践 ] 三.k8s yaml编写即开发
【云原生kubernetes从入门到实践 ] 四.k8s deploy介绍
【云原生kubernetes从入门到实践 ] 五.k8s service访问
【云原生kubernetes从入门到实践 ] 六.k8s etcd数据库操作
【云原生kubernetes从入门到实践 ] 七.k8s 网络配置
【云原生kubernetes从入门到实践 ] 八.k8s 认证授权

k8s 运维监控

【云原生kubernetes从入门到实践 ] 一.k8s Rancher部署
【云原生kubernetes从入门到实践 ] 二.Prometheus监控
【云原生kubernetes从入门到实践 ] 三.k8s Grafana展示
【云原生kubernetes从入门到实践 ] 四.k8s Alertmanager告警

k8s Devops自动化部署

【云原生kubernetes从入门到实践 ] 一.k8s DevOps平台实践
【云原生kubernetes从入门到实践 ] 二.k8s Pipline流水线
【云原生kubernetes从入门到实践 ] 三.k8s 多分支流水线
【云原生kubernetes从入门到实践 ] 四.k8s Jenkins容器集成
【云原生kubernetes从入门到实践 ] 五.k8s SonarQube代码扫描
【云原生kubernetes从入门到实践 ] 六.k8s RobotFramework集成
【云原生kubernetes从入门到实践 ] 七.k8s SharedLibrary进行CICD
【云原生kubernetes从入门到实践 ] 八.k8s sharedLibrary集成K8S服务部署
【云原生kubernetes从入门到实践 ] 九.k8s 多环境部署

k8s 项目交付

【云原生kubernetes从入门到实践 ] 一.k8s Python Flask项目交付
【云原生kubernetes从入门到实践 ] 二.k8s Vue项目交付
【云原生kubernetes从入门到实践 ] 三.k8s Springcloud项目交付

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry-sky(jing)

一起共勉,一起加油!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值