mysql放到云上做成镜像_使用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)

MAINTAINER JianJie [email protected]

# 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"‘\ninnodb_file_per_table = on\nskip_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

20190308112226112203.png

20190308112226261617.png

20190308112226514546.png

根据Dockerfile构建mysql镜像:

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

构建Dockerfile过程:

20190308112226672750.png

成功通过Dockerfile构建mysql镜像:

20190308112226863179.png

查看成功构建的mysql镜像:

20190308112227037984.png

四、启动mysql容器

启动mysql容器:

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

20190308112227396382.png

说明:

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

五、连接mysql服务

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

在本地主机连接mysql服务:

20190308112227626851.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值