Dockerfile
mkdir mysql
cd mysql
vim Dockerfile
将软件包考入当前目录:mysql-5.6.26.tar.gz
FROM centos:7
MAINTAINER This is MySQL
RUN yum -y update && yum -y install gcc gcc-c++ make pcre-devel expat-devel perl ncurses ncurses-devel bison cmake autoconf
ADD mysql-5.6.26.tar.gz /opt/
RUN useradd -s /sbin/nologin mysql
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
RUN make && make install
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/
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 '/^basedir=/s#basedir=#basedir=/usr/local/mysql#' /etc/init.d/mysqld
RUN sed -i '/^datadir=/s#datadir=#basedir=/home/mysql#' /etc/init.d/mysqld
RUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
ENTRYPOINT [ "/usr/local/mysql/bin/mysqld_safe" ]
容器运行测试
docker build -t centos7:mysql .
docker run -d -P centos7:mysql --privileged
docker exec -it 557a1908cee1 bash
mysql - u root - p
grant all privileges on * . * to 'root' @'% ' identified by ' 123456 ';
grant all privileges on *.* to ' root'@' localhost' identified by ' 123456 ';
flush privileges ;
mysql -h 容器IP -P 端口号 -u 用户 -p 密码
报错总结
如果mysql容器启动容易闪退: 虚拟内存不够,无法启动mysql 解决方法: 启动swap
dd if= /dev/zero of= /swapfile bs= 1M count= 1024
mkswap /swapfile
swapon /swapfile
docker start 557a1908cee1