MySQL镜像构建
前期准备
已构建centos67-ssh:5.3镜像
supervisord.conf内容
#用于容器启动时启动相关服务或运行脚本
[program:sshd]
command=service sshd start
[program:crond]
command=service crond start
[program:mysql-config]
autorestart=false
command=sh /root/mysql-config.sh
[program:mysql]
command=service mysqld start
mysql-config.sh内容
#配置时钟同步
sed -i ‘/^server.*/d’ /etc/ntp.conf
echo ‘*/1 * * * * /usr/sbin/ntpdate -q ‘$CLOUDERA_MASTER >>
/var/spool/cron/root
#修改mysql的root用户密码,并授予任意主机远程访问权限
service mysqld stop
printf “Starting MySQL with skip grant tables\n”
mysqld_safe --skip-grant-tables >/dev/null 2>&1 &
printf “using mysql to flush privileges and reset password\n”
mysql -u root mysql << EOF
update user set password = password(’$MYSQL_ROOT_PASSWORD’) where user =
‘root’;
grant all privileges on *.* to ‘root’@’%’ identified by
‘$MYSQL_ROOT_PASSWORD’ with grant option;
flush privileges;
EOF
service mysqld restart
Dockerfile内容
FROM centos67-ssh:5.3
WORKDIR /root
ADD supervisord.conf /root/supervisord.conf
ADD mysql-config.sh /root/mysql-config.sh
ADD mysql-community-release-el6-5.noarch.rpm
/root/mysql-community-release-el6-5.noarch.rpm
RUN echo ‘proxy=http://xzproxy.cnsuning.com:8080’ >> /etc/yum.conf \
&& rpm -ivh /root/mysql-community-release-el6-5.noarch.rpm \
&& yum install -y mysql-server && yum install -y supervisor \
&& yum clean all \
&& sed -i ‘/^proxy=.*/d’ /etc/yum.conf \
&& sed -i
‘s#socket=/var/lib/mysql/mysql.sock#socket=/var/lib/mysql/mysql.sock\nmax_connections=500\nwait_timeout=31536000#g’
/etc/my.cnf \
&& sed -i ‘s/^nodaemon=.*/nodaemon=true/g’ /etc/supervisord.conf \
&& cat /root/supervisord.conf >> /etc/supervisord.conf \
&& rm -rf /root/supervisord.conf \
&& rm -rf /var/cache/yum/* \
&& rm -rf /var/lib/mysql/* \
&& chown -R root:root /var/lib/mysql \
&& chmod u+x /root/mysql-config.sh \
&& chkconfig supervisord on \
&& chkconfig iptables off \
&& chkconfig ntpd on \
&& chkconfig mysqld on
ENV MYSQL_ROOT_PASSWORD="" \
CLOUDERA_MASTER=localhost
VOLUME ["/var/lib/mysql"]
EXPOSE 22 3306
CMD ["/usr/bin/supervisord"]
其他文件
mysql-community-release-el6-5.noarch.rpm用于添加安装mysql源
构建命令
进入到Dockerfile文件所在目录,执行以下命令:
sudo docker build -t centos67-ssh53-mysql:5.6 .
启动mysql容器
在主机创建目录
sudo mkdir -p /home/hadoop/mysql
启动mysql容器
sudo docker run -d -p 3306:3306 -p 1022:22 -v
/home/hadoop/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=suning --name
cloudera-mysql --hostname cloudera-mysql --net shadownet --ip 172.18.0.2
–add-host cloudera-master:172.18.0.3 --add-host cloudera-slave1:172.18.0.4
–add-host cloudera-slave2:172.18.0.5 --add-host cloudera-slave3:172.18.0.6
–restart=always centos67-ssh53-mysql:5.6
–name 容器名称
–hostname 容器主机名称
–net 网络名称
–ip 容器ip,必须和–net配合使用,并且—net指定的网络必须为自定义网络
–add-host 在容器中添加hosts
–restart 容器重启策略
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
-d 后台启动
-p端口映射:
1022是宿主机端口
22是容器端口
-v 指定宿主机和容器目录映射
/home/hadoop/mysql是宿主机目录
/var/lib/mysql是容器目录
-e 指定环境变量
MYSQL_ROOT_PASSWORD 是设置root用户密码
centos67-ssh53-mysql:5.6是镜像名:镜像tag