MySQL容器化详细教程

  

<强>前言:

  

上篇文章介绍了码头工人工具的安装及常用命令使用。本篇文章我们会介绍如何在码头工人中运行MySQL实例,可能有的小伙伴会问:为什么要在码头工人里运行MySQL呢?因为在码头工人里部署MySQL实例操作简单,不需要考虑操作系统等依赖差异,而且可以多实例部署,比如说我们原来服务器有安装MySQL5.7,我们想再运行MySQL8.0实例的话只需要用码头工人启动MySQL8.0镜像即可。下面我们就来介绍下如何用码头工人启动MySQL实例。

  
▍1。拉取MySQL官方镜像
  

在上篇文章中我们介绍过码头工人中三个基本的概念:镜像,容器,仓库。要用在码头工人中部署MySQL,第一步要做的是从官方仓库中拉取MySQL镜像,这里我们从码头工人中心中拉取MySQL镜像。进入码头工人中心,搜索MySQL,可以看到如下画面,其中有不同版本的镜像及使用介绍。

  

  

比如我们想拉取MySQL5.7版本及8.0版本的镜像,可以做如下操作:

  
 <代码类=" sql语言"> #拉取5.7及8.0版本镜像稍等片刻即可拉取成功
  码头工人把mysql: 5.7.23
  码头工人把mysql: 8.0.18
  
  #查看镜像
  码头工人的图片
  标签影像ID创建存储库的大小
  mysql 8.0.18 c8ee894bd2bd 2周前456 mb
  mysql 5.7.23 1 b30b36ae96a 12个月前372 mb  
  

其实MySQL官方镜像也存在一些缺陷,比如说时区不是北京时间,系统字符集问题等。下面以MySQL5.7.23版本镜像为基础,展示下如何修改构建镜像。

  
 <代码类=" sql语言"> #创建Dockerfile主要作用是更改系统字符集及时区内容如下:
  猫Dockerfile
  从mysql: 5.7.23
  维护者王
  回声”别名ls=ls——颜色=汽车”在祝辞/root/.bashrc \ (
  ,,ln科幻/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
  
  ENV LANG=C.UTF-8
  
  #构建镜像
  码头工人建造- t my-mysql: 5.7.23。
  发送构建上下文码头工人守护进程2.048 kb
  步骤4:从mysql: 5.7.23
  ——比;1 b30b36ae96a
  2/4步:王维护者
  ——比;运行在a7cc94f95cc7
  删除中间容器a7cc94f95cc7
  ——比;d9590ed98de5
  3/4步:运行回声“别名ls=ls——颜色=汽车”在祝辞/root/.bashrc, (,ln科幻/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
  ——比;运行在e698bfdb3817
  删除中间容器e698bfdb3817
  ——比;31日c9ed9103c5
  步骤4:ENV LANG=C.UTF-8
  ——比;运行在eefa296fef94
  删除中间容器eefa296fef94
  ——比;10 aa697936e9
  成功地建立了10 aa697936e9
  成功标记my-mysql: 5.7.23
  
  #再次查看镜像即可找到我们新构建的镜像
  码头工人的图片
  标签影像ID创建存储库的大小
  my-mysql 5.7.23 10 aa697936e9大约一分钟前372 mb
  mysql 8.0.18 c8ee894bd2bd 2周前456 mb
  mysql 5.7.23 1 b30b36ae96a 12个月前372 mb  
  
▍2。启动MySQL实例
  

这里为大家介绍如何利用上面构建的镜像来运行MySQL实例,MySQL容器化其实也需要映射端口,数据持久化,加载配置文件等操作,下面给大家演示下具体启动操作。

  

2.1创建数据持久化路径及配置文件

  
 <代码类=" sql语言"> #创建配置文件目录及数据目录
  mkdir - p/数据/mysql57/{cnf,数据}
  
  #添加配置文。件my . cnf中所做
  cd/数据/mysql57/cnf/vim my.cnf
  
  #配置文件内容如下,可自定义
  (mysqld)
  pid文件=/var/run/mysqld/mysqld.pid
  套接字=/var/run/mysqld/mysqld.sock
  datadir=/var/lib/mysql
  
  服务器id=33061
  max_connections=1000
  sql_mode=NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
  lower_case_table_names=1
  innodb_file_per_table=1
  log_timestamps=系统
  character-set-server=utf8
  max_allowed_packet=32 m
  sort_buffer_size=4米
  read_buffer_size=4米
  join_buffer_size=4米
  binlog_cache_size=4米
  tmp_table_size=96
  max_heap_table_size=96
  通过innodb_buffer_pool_size=512
  
  #日志
  slow_query_log=1
  slow_query_log_file=/var/lib/mysql/slow.log
  long_query_time=3
  log-bin=/var/lib/mysql/binlog
  binlog_format=行
  expire_logs_days=15
  log_bin_trust_function_creators=1  
  

2.2码头工人运行运行MySQL实例

  
 <代码类=" sql语言"> #一条命令启动一个MySQL实例
  码头工人运行itd - p 33061:3306——名字mysql57主机名=mysql57 - v/数据/mysql57/cnf:/etc/mysql - v/数据/mysql57/:/var/lib/mysql——特权=true - e MYSQL_ROOT_PASSWORD=Asdf@123456 my-mysql: 5.7.23
  
  #解释下各个参数的含义
  - d:后台运行容器,并返回容器ID
  我:以交互模式运行容器,通常与- t同时使用
  - t:为容器重新分配一个伪输入终端,通常与我同时使用
  p:指定端口映射,格式为:主机(宿主)端口:容器端口
  ——name=" mysql57”:为容器指定一个名称
  ——主机名=mysql57:指定容器的主机名
  - v:绑定一个卷
  ——特权=true:以特权方式启动容器

MySQL容器化详细教程