• 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}"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 下载具体镜像具体版本

      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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 命令参数说明

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

  • 相关阅读:
    在软件测试行业这种情况下,凭什么他能拿25k?我却约面试都难?
    【深度学习】【三维重建】windows10环境配置tiny-cuda-nn详细教程
    C++征途 --- deque容器
    369-HI-R-M-0-0-0-E 数字化转型如何改变DCS和SCADA
    案例分享 | 纽扣电池石墨片厚度及缺陷检测
    vue3路由跳转传参
    RestFul,会话技术,Fiddler
    中药配方专利申请时间有多久?
    基于Python的医疗花费预测
    外包干了2个月,技术退步明显。。。。。
  • 原文地址:https://blog.csdn.net/m0_67403188/article/details/126327492