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 '}' '
'  | 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:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值