镜像动态化实验-MYSQL
拓展:mysql5.5 源码包安装
1)上传安装所需的源码包

2)安装
$ yum -y install ncurses-devel make cmake bison gcc gcc-c++
$ tar -zxvf /root/ncurses-5.9.tar.gz -C /root/
$ cd /root/ncurses-5.9/
# * --without-ada参数为设定不编译为ada绑定,因进入chroot环境不能使用ada ;--enableoverwrite参数为定义把头文件安装到/tools/include下而不是/tools/include/ncurses目录* --with-shared 生成共享库
$ ./configure --with-shared --without-debug --without-ada --enable-overwrite
$ make && make install
$ useradd -s /sbin/nologin -M mysql
$ tar -zxvf /root/mysql-5.5.23.tar.gz -C /root/
$ cd /root/mysql-5.5.23/
# -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 安装位置
# -DMYSQL_UNIX_ADDR=/tmp/mysql.sock 指定socket(套接字)文件位置
# -DEXTRA_CHARSETS=all 扩展字符支持
# -DDEFAULT_CHARSET=utf8 默认字符集
# -DDEFAULT_COLLATION=utf8_general_ci 默认字符校对
# -DWITH_MYISAM_STORAGE_ENGINE=1 安装myisam存储引擎
# -DWITH_INNOBASE_STORAGE_ENGINE=1 安装innodb存储引擎
# -DWITH_MEMORY_STORAGE_ENGINE=1 安装memory存储引擎
# -DWITH_READLINE=1 支持readline库
# -DENABLED_LOCAL_INFILE=1 启用加载本地数据
# -DMYSQL_USER=root 指定root运行用户
# -DMYSQL_TCP_PORT=3306 指定mysql端口
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=root -DMYSQL_TCP_PORT=3306
$ make && make install
$ cd /usr/local/mysql
$ cp support-files/my-medium.cnf /etc/my.cnf
# 初始化数据库
$ /usr/local/mysql/scripts/mysql_install_db --user=root --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --defaults-file=/etc/my.cnf
# 后台方式启动数据库
$ /usr/local/mysql/bin/mysqld_safe --user=root &
# 前台方式启动数据库
$ /usr/local/mysql/bin/mysqld_safe --user=root
1、上传安装mysql需要的软件包

2、编写 Dockerfile 文件
$ vim Dockerfile
Dockerfile 配置文件详细:
FROM centos:centos7.9.2009
MAINTAINER yq "yq@yq.com"
LABEL ncurses_version=5.9 \
mysql_version=5.5.23
RUN cd /etc/yum.repos.d/ && mkdir back && mv *.repo back/ && curl http://mirrors.163.com/.help/CentOS7-Base-163.repo > 163.repo && yum clean all
RUN yum -y install ncurses-devel make cmake bison gcc gcc-c++
ADD ./*.tar.gz /root/
RUN cd /root/ncurses-5.9/ && ./configure --with-shared --without-debug --without-ada --enable-overwrite && make && make install && useradd -s /sbin/nologin -M mysql && cd /root/mysql-5.5.23/ && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=root -DMYSQL_TCP_PORT=3306 && make && make install
RUN cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
RUN ln -s /usr/local/mysql/bin/* /usr/local/bin
ADD ./startup.sh /root/
ENV MYSQL_ROOT_PASSWORD default
CMD /bin/bash /root/startup.sh
3、编写 startup.sh 脚本
$ vim startup.sh
startup.sh 脚本详细:
#!/bin/bash
if [ `ls /usr/local/mysql/data/mysql |wc -l` -eq 0 ]; then
isdata=0
echo "0 "
else
isdata=1
fi
if [ $isdata == "0" ];then
/usr/local/mysql/scripts/mysql_install_db --user=root --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --defaults-file=/etc/my.cnf
/usr/local/mysql/bin/mysqld_safe --user=root &
sleep 2s
/usr/local/mysql/bin/mysqladmin -uroot password $MYSQL_ROOT_PASSWORD
kill -QUIT $( ps aux | grep mysqld | grep "sock" | awk '{print $2}')
sleep 2s
/usr/local/mysql/bin/mysqld_safe --user=root
fi
if [ $isdata == "1" ];then
/usr/local/mysql/bin/mysqld_safe --user=root
fi
4、制作镜像
$ pwd
/root
$ ls
Dockerfile mysql-5.5.23.tar.gz ncurses-5.9.tar.gz startup.sh
$ docker build -t mysql:v1 .
5、传递不同参数,使用镜像
$ docker run --name mysql-1 -d -p 3306:3306 mysql:v1 #使用默认参数,密码为defalut
$ docker run --name mysql-2 -d -p 3000:3306 --env MYSQL_ROOT_PASSWORD=123456 mysql:v1 #更改参数,密码改为123456
6、访问容器测试
进入mysql-1容器

进入mysql-2容器
