Docker安装MySQL5.7

日常运维中肯定有很多需要数据库的,一般测试环境不管是源码安装还是rpm安装mysql都比较消耗时间,此时使用docker安装mysql就是一个便捷高效的方式。本文基于在CentOS7已经安装好了docker应用前提下。

一、MySQL镜像选型

  • 直接检索MySQL镜像
# docker search mysql 
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                             MySQL is a widely used, open-source relati...   10671     [OK]       
docker.io   docker.io/mariadb                           MariaDB Server is a high performing open s...   4008      [OK]       
docker.io   docker.io/mysql/mysql-server                Optimized MySQL Server Docker images. Crea...   779                  [OK]
docker.io   docker.io/percona                           Percona Server is a fork of the MySQL rela...   528       [OK]       
docker.io   docker.io/centos/mysql-57-centos7           MySQL 5.7 SQL database server                   87                   
docker.io   docker.io/mysql/mysql-cluster               Experimental MySQL Cluster Docker images. ...   80                   
docker.io   docker.io/centurylink/mysql                 Image containing mysql. Optimized to be li...   59                   [OK]
docker.io   docker.io/bitnami/mysql                     Bitnami MySQL Docker Image                      50                   [OK]
docker.io   docker.io/databack/mysql-backup             Back up mysql databases to... anywhere!         42                   
......
  • 查看镜像支持的版本

从上面一看,官方版本镜像肯定是最新的,不好看官方支持哪些版本镜像,可以通过如下方式查看支持哪些 tag 参数,也就是版本号了。

#!/bin/bash
function usage() {
cat << HELP
 
dockertags  --  list all tags for a Docker image on a remote registry.
 
EXAMPLE: 
    - list all tags for ubuntu:
       dockertags ubuntu
 
    - list all php tags containing apache:
       dockertags php apache
 
HELP
}
 

if [ $# -lt 1 ]; then
    usage
    exit
fi
 
image="$1"
tags=`wget -q https://registry.hub.docker.com/v1/repositories/${image}/tags -O -  | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n'  | awk -F: '{print $3}'`
 
if [ -n "$2" ]; then
    tags=` echo "${tags}" | grep "$2" `
fi
echo "${tags}"
  • 下载具体镜像具体版本
# docker pull mysql:5.7

二、Docker容器启动

# 精简方式
# docker run --name mysql -p 3306:3306 -d mysql:5.7 

# 映射目录方式启动,主要是为了方便查看mysql日志以及把数据存在宿主机上防止容器问题丢失
# 可以先在宿主机上创建配置文件,配置文件上数据目录最好依旧放在 /var/lib/mysql,因为其他目录可能容器不存在该目录
# cat /etc/my.cnf
[mysqld]
user                  = mysql
port                  = 3306
socket                = /var/sock/mysqld
datadir               = /var/lib/mysql
log-error             = /var/log/mysql/error.log
pid-file              = /var/lib/mysql/mysql.pid

character-set-server  = utf8mb4

[mysql]
default-character-set = utf8mb4

[client]
port                  = 3306
socket                = /var/sock/mysqld

# 启动,宿主需要先创建对应映射目录
# mkdir -p /data/mysql/{data,log} && chmod 777 /data/mysql/log
# docker run --name mysql -p 3306:3306 -v /data/mysql/data:/var/lib/mysql -v /data/mysql/log:/var/log/mysql -v /etc/my.cnf:/etc/my.cnf -v /etc/localtime:/etc/localtime:ro  -e MYSQL_ROOT_PASSWORD=zengame123456 -d mysql:5.7

  • 命令参数说明
-p 3306:3306:                               # 容器的3306端口映射到主机的3306端口

-v /etc/my.cnf:/etc/my.cnf:                 # 将主机/etc/my.cnf挂载到容器的/etc/my.cnf

-v /data/mysql/log:/var/log/mysql:          # 将主机/data/mysql/log目录挂载到容器的/var/log/mysql

-v /data/mysql/data:/var/lib/mysql:         # 将主机/data/mysql/data目录挂载到容器的数据目录/var/lib/mysql

-v /etc/localtime:/etc/localtime:ro          # 设置容器的时间与宿主机同步

--lower_case_table_names=1                   # 设置表名参数名等忽略大小写

-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

三、docker 容器设置开机自启

  • 在使用docker run时,添加下面参数
--restart=always 
  • 在运行docker的时候添加
docker update --restart=always beb023d5cbd6  # beb023d5cbd6 是容器ID

Reference:

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值