k8s系列~docker mysql
docker封装mysql的一些心得
简介:今天咱们来聊聊容器化mysql的一些心得
版本:Docker version 18.03 mysql 5.7.21
考虑条件:
1 选好合适的docker镜像
2 容器安装的内容
3 分离设置的方式
我的思路
1 关于mysql 安装设计
1 尽量只安装基础软件包+mysql服务在容器内,像percona等第三方软件不要安装在容器内,因为软件包本身会依赖很多软件,要保持容器的干净整洁
2 上述第三方软件可以选择安装在宿主内,在宿主内通过映射端口进行操作
2 关于mysql 服务设计
1 mysql 数据目录和配置文件采用外挂方式,最后保存在本地磁盘,不要通过NFS等其他挂载方式,减少网络开销,配置文件也便于修改
2 mysql 的err和pid的命名方式采用固定命名,因为容器每次重启的hostname都要改变
3 mysql配置文件最好开启双写+双1模式,增强数据有效性,如果容器损坏造成页损坏导致数据不可用就很糟糕了
4 mysql开机启动采用mysqld_safe形式,这样能使容器不退出
5 对于mysql的初始化操作我的意见是初始化一次作为标准就足够了,然后将这部操作摘除dockerfile,将标准化的数据文件作为下一个容器的启动根据(记得删除auto.cnf)
3 关于dockerfile编写
1 尽量安装精简的软件,越少越好,最好只安装服务本身所 必须的软件.你要明白,docker本身只是做服务的容器
2 大量的RUN命令能合并的都合并,这样能减少docker容器生成的嵌套层,这对于镜像本身是非常重要的
3 开机启动脚本调用cmd命令
4 对于dockerfile的编译,尽量将基础环境安装和不太变动的操作写在前面,这样在调试的时候会减少编译时间
5 docker容器内不支持rc.local的开机启动
4 docker运行的注意事项
1 -e 选项可以赋予容器内变量,这样可以有效进行定制化启动,比如定制化buffer_pool,然后可以在my.cnf进行定制化后启动服务
2 关于IP地址的固定我们也在探索
5 docker常用命令
1 docker build -t mysql:v1 . 编译dockerfile
2 docker ps 查看正在运行的容器
3 docker ps -a 查看历史运行的容器
4 docker image 查看镜像
5 docker rm $(docker ps -a -q) 删除所有容器
6 docker run -itd mysql:v1 -e 'vale' -v 'directory' --name 'name' 启动
7 docker exec -it name /bin/bash 运行
8 docker tag 打标签 然后push 到私有仓库
总结:这只是一个单纯的docker定制,我们的目标是在k8s中进行容器化的管理,敬请期待下一篇,有错误和建议敬请留言指出
k8s系列~docker mysql的更多相关文章
- Docker & k8s 系列一:快速上手docker
Docker & k8s 系列一:快速上手docker 本篇文章将会讲解:docker是什么?docker的安装,创建一个docker镜像,运行我们创建的docker镜像,发布自己的docke ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
- Docker系列之MySQL安装教程
Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...
- Docker & k8s 系列二:本机k8s环境搭建
本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...
- Docker & k8s 系列三:在k8s中部署单个服务实例
本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...
随机推荐
- 洛谷P3588 [POI2015]PUS
题面 sol:说了是线段树优化建图的模板... 就是把一整个区间的点连到一个点上,然后用那个点来连需要连一整个区间的点就可以了,就把边的条数优化成n*log(n)了 #include <queu ...
- Codeforces Round #381 (Div. 2)C Alyona and mex
Alyona's mother wants to present an array of n non-negative integers to Alyona. The array should be ...
- 打开SharePoint 2013 web application显示iis 欢迎页面
当我打开SP web application时,页面显示如下: 查看event log,发现有一些8315-8317之类的error,发现把request management service停掉后, ...
- CF528D Fuzzy Search 【NTT】
题目链接 CF528D 题解 可以预处理出\(S\)每个位置能匹配哪些字符 对每种字符 构造两个序列 如果\(S[i]\)可以匹配该字符,则该位置为\(0\),否则为\(1\) 如果\(T[i]\)可 ...
- uoj【UNR #3】To Do Tree 【贪心】
题目链接 uojUNR3B 题解 如果不输出方案,是有一个经典的三分做法的 但是要输出方案也是可以贪心的 设\(d[i]\)为\(i\)节点到最深的儿子的距离 贪心选择\(d[i]\)大的即可 #in ...
- 初探ant-design(web版本)
第一步安装ant-design插件 第二步查看项目目录 第三步运行项目 我们查看index.js文件 这个其实是Datepicker组件的展示效果 第四步我们按照下面的代码代替Index.js中的内容 ...
- git branch 分支管理
在多人协作的情况下,master通常是稳定的分支.可以再建一些"develop","testing"等名称的分支.主管master的人做开发的话最好也建立自己的 ...
- Linux新系统的安全优化和内核参数优化
拿到一个新的linux系统需要做的安全和内核优化,主要是为了提升系统安全和提升性能,满足后续的应用需要.这里简单记录一下拿到一个新的系统需要做的一些事情,仅此抛砖引玉,具体可根据自己实际情况进行设置. ...
- C# 线程手册 第三章 使用线程 实现一个数据库连接池(实战篇)
在企业级软件开发过程中,为了改善应用程序的性能需要通常使用对象池来控制对象的实例化.例如,在我们每次需要连接一个数据库时都需要创建一个数据库连接,而数据库连接是非常昂贵的对象.所以,为了节省为每次数据 ...
- SpringBoot使用redis缓存List<Object>
一.概述 最近在做性能优化,之前有一个业务是这样实现的: 1.温度报警后第三方通讯管理机直接把报警信息保存到数据库 2.我们在数据库中添加触发器,(BEFORE INSERT)根据这条报警信息处理业务 ...