构建MYSQL5.6版本镜像
在网上看了好多mysql5.6版本镜像的构建,基本上都是使用Docker官方源下载构建的。这里我想使用编译的方法搭建。
当然个人觉的官方提供的Mysql:5.6源也不错,体积小,这个搭建完成后占用空间5个多G。
下面展示我的Dockerfile文件
- 1、创建目录,在目录下编写Dockerfile文件,存放相关的软件包
mkdir /mysql
cd /mysql
vi Dockerfile
FROM centos:7
MAINTAINER this is mysql-5.6
#更新yum源
RUN yum -y update
#安装环境依赖包
RUN yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
RUN yum -y install ncurses ncurses-devel bison cmake autoconf
#解压mysql包
ADD mysql-5.6.26.tar.gz /opt/
#创建mysql系统用户
RUN useradd -s /sbin/nologin mysql
#进入源码包,执行cmake文件,指定工作目录
WORKDIR /opt/mysql-5.6.26
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
#make编译
RUN make && make install
#复制默认配置文件到/etc目录下
RUN cp -f support-files/my-default.cnf /etc/my.cnf
RUN mkdir -p /usr/local/mysql/
RUN chown -R mysql:mysql /usr/local/mysql/
#配置mysql环境变量
ENV PATH /usr/local/mysql/bin:$PATH
#初始化数据库
RUN /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
#指明服务端口
EXPOSE 3306
#启动
RUN cp support-files/mysql.server /etc/init.d/mysqld
RUN chmod 755 /etc/init.d/mysqld
RUN sed -i '46s/basedir=/basedir=\/usr\/local\/mysql/' /etc/init.d/mysqld
RUN sed -i '46s/datadir=/basedir=\/home\/mysql/' /etc/init.d/mysqld
RUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
#启动方式我在这里用的mysqld_safe命令,使用mysql-server启动服务没有成功。
ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]
搭建这个Mysql5.6版本镜像花费了我较长时间,因为初次接触Dockerfile,玩的不是太熟练,调试的过程中需要等待大概20分钟。mysql-5.7的编译安装花费时间更长。
- 2、创建mysql镜像
docker build -t mysql.new .
- 3、创建容器
docker run -d mysql.new -P --privileged #使用root用户
- 4、要设置远程登录的权限和本地登录密码。
docker ps -a 查看容器ID、端口
#进入容器
docker exec -it 533612e70f2b /bin/bash
#用grant命令授权
grant all privileges on *.* to 'root'@'%' identified by '123'; #远程可访问数据库使用123密码
grant all privileges on *.* to 'root'@'localhost' identified by '123'; #本地登录使用123密码
#一定记得刷新权限,不然之前的设置不生效
flush privileges;
- 5、验证,我用另一台装有mysql的虚拟机访问测试
格式:mysql -h mysql容器的IP地址 -P 端口号 -u 用户 -p 密码