zoukankan      html  css  js  c++  java
  • 使用docker制作Mysql镜像

     一、过程说明

    通过Dockerfile创建mysql镜像,使用的mysql软件包为mariadb二进制分发版,最终在宿主机启动mysql容器从而能在mysql容器外部访问mysql服务。

    宿主机IP:172.20.236.106   

    宿主机操作系统:CentOS7.5(x86_64)

    宿主机内核版本:3.10.0-327.el7.x86_64

    Dockerfile相关

    Dockerfile位置:/root/dockerfile/Dockerfile

    MariaDB镜像位置:/root/dockerfile/mariadb-10.1.35-linux-x86_64.tar.gz

    MariaDB所需依赖包及位置:/root/dockerfile/libaio-0.3.109-13.el7.x86_64.rpm

    Dockerfile启动脚本:/root/dockerfile/setup.sh

    二、Dockerfile文件

    1、Dockerfile

    # This dockerfile uses the centos image
    # VERSION 
    # Author: JianJie
    # Command format: Instruction [arguments / command] ..
    
    # Base image to use, this must be set as the first line
    FROM centos:latest
    
    # Maintainer: docker_user <docker_user at email.com> (@docker_user)
    MAINTAINER JianJie jie.jian@transwarp.cn
    
    # Command to update the image
    WORKDIR /root
    ENV MYSQL_DATA_DIR=/mydata/data
    ENV MYSQL_USER=mysql
    ENV MYSQL_EXTRACT_DIR=/usr/local
    ENV MYSQL_PORT=3306
    
    COPY libaio-0.3.109-13.el7.x86_64.rpm $MYSQL_EXTRACT_DIR
    COPY mariadb-10.1.35-linux-x86_64.tar.gz $MYSQL_EXTRACT_DIR
    COPY setup.sh /root
    RUN chmod +x /root/setup.sh
    RUN mkdir -p $MYSQL_DATA_DIR && cd $MYSQL_EXTRACT_DIR && yum install -y libaio-0.3.109-13.el7.x86_64.rpm && 
        echo "Unpacking mysql ..." && tar xf mariadb-10.1.35-linux-x86_64.tar.gz && 
        ln -sf mariadb-10.1.35-linux-x86_64 mysql && rm -rf mariadb-10.1.35-linux-x86_64.tar.gz
    RUN groupadd -r -g 306 mysql && useradd -r -g 306 -u 306 mysql && cd $MYSQL_EXTRACT_DIR/mysql && 
        chown -R mysql:mysql ./* && chown -R mysql:mysql $MYSQL_DATA_DIR
    RUN cd $MYSQL_EXTRACT_DIR/mysql && cp support-files/mysql.server /etc/rc.d/init.d/mysqld && 
        chkconfig --add mysqld && chkconfig mysqld on && echo "export PATH=$MYSQL_EXTRACT_DIR/mysql/bin:$PATH" >> /etc/profile.d/mysql.sh && 
        source /etc/profile.d/mysql.sh
    RUN mkdir -p /etc/mysql && cd $MYSQL_EXTRACT_DIR/mysql && cp support-files/my-large.cnf /etc/mysql/my.cnf && 
        sed -i '/[mysqld]/a datadir = '"$MYSQL_DATA_DIR"'
    innodb_file_per_table = on
    skip_name_resolve = on' /etc/mysql/my.cnf
    
    RUN yum clean all
    EXPOSE 3306
    
    CMD ["/root/setup.sh"]

    2、setup.sh

    #!/bin/sh
    chown -R mysql:mysql /mydata/data
    cd /usr/local/mysql/scripts && ./mysql_install_db --user=mysql --datadir=/mydata/data --socket=/tmp/mysql.sock --pid-file=/mydata/data/mysqld.pid --log-error=/mydata/data/mysqld.log --basedir=/usr/local/mysql 
    cd /usr/local/mysql/bin && ./mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/data --socket=/mydata/data/mysql.sock 
    # sleep 5
    # mysql < /root/password.sql

    3、libaio-0.3.109-13.el7.x86_64.rpm

    三、制作Dockerfile步骤

    制作Dockerfile步骤:

     mkdir -p /root/dockerfile          // 创建Dockerfile目录

     将官网下载的MariaDB二进制安装包下载至Dockerfile目录:/root/dockerfile;

    将MariaDB所需依赖包libaio-0.3.109-13.el7.x86_64.rpm下载至至Dockerfile目录:/root/dockerfile;

    编写Dockerfile和Dockerfile启动脚本setup.sh;

    ls -l /root/dockerfile

    根据Dockerfile构建mysql镜像:

    docker build -t docker-user/mysql:v1 /root/dockerfile

    构建Dockerfile过程:

    成功通过Dockerfile构建mysql镜像:

    查看成功构建的mysql镜像:

    四、启动mysql容器

    启动mysql容器:

    docker run -d -p 13306:3306 -v /hadoop/mysql:/mydata/data docker-user/mysql:v1

    说明:

    -p参数用于将容器内mysql暴露的3306端口映射至本地主机的13306端口;-v参数将容器中mysql的数据目录挂载至本地主机的/hadoop/mysql目标。

    五、连接mysql服务

    mysql -P 13306 -S /hadoop/mysql/mysql.sock

    在本地主机连接mysql服务:

  • 相关阅读:
    SSE特殊指令集系列之二字节绝对差值求和指令
    HDR阴影高光图像增强
    移植FFMPEG到VS2008系列之二
    SSE2指令集系列之一浮点运算指令
    移植FFMPEG到VS2008系列之三
    网站添加时间线
    HTML实体符号代码速查表
    div显示在object、embed之上~
    不用JS照样使IE6支持PNG 24位背景图支持透明背景且链接不会失去焦点
    CSS 针对谷歌浏览器(Chrome) safari的webkit核心浏览器CSS hack
  • 原文地址:https://www.cnblogs.com/yfb918/p/10494432.html
Copyright © 2011-2022 走看看