Docker 安装 MySQL

通过 Docker Hub  pull mysql

[root@docker ~]# docker search mysql
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                             MySQL is a widely used, open-source relati...   8316      [OK]       
docker.io   docker.io/mariadb                           MariaDB is a community-developed fork of M...   2847      [OK]       
docker.io   docker.io/mysql/mysql-server                Optimized MySQL Server Docker images. Crea...   619                  [OK]
docker.io   docker.io/percona                           Percona Server is a fork of the MySQL rela...   437       [OK]       
docker.io   docker.io/centurylink/mysql                 Image containing mysql. Optimized to be li...   60                   [OK]
docker.io   docker.io/centos/mysql-57-centos7           MySQL 5.7 SQL database server                   54                   
docker.io   docker.io/mysql/mysql-cluster               Experimental MySQL Cluster Docker images. ...   45                   
docker.io   docker.io/deitch/mysql-backup               Automated and scheduled mysql database dum...   37                   [OK]
  • 拉取官方镜像,标签为 5.6
[root@docker ~]# docker pull mysql:5.6
[root@docker ~]# docker images | grep 5.6
docker.io/mysql             5.6                 3ed1080b793f        2 weeks ago         256.4 MB

通过 Dockerfile 构建

  • 进入创建的mysql目录,创建Dockerfile
[root@docker mysql]# cat Dockerfile
FROM centos
MAINTAINER zhcool
COPY MariaDB-10.0.33-centos7-x86_64-client.rpm /root/mysqlMariaDB-10.0.33-centos7-x86_64-client.rpm
COPY MariaDB-10.0.33-centos7-x86_64-common.rpm /root/mysql/MariaDB-10.0.33-centos7-x86_64-common.rpm 
COPY MariaDB-10.0.33-centos7-x86_64-compat.rpm  /root/mysql/MariaDB-10.0.33-centos7-x86_64-compat.rpm
COPY MariaDB-10.0.33-centos7-x86_64-server.rpm  /root/mysql/MariaDB-10.0.33-centos7-x86_64-server.rpm
WORKDIR /root
RUN yum remove mysql-libs -y
RUN yum -y install *.rpm
ADD business.sql /root/mysql/business.sql
ADD server.cnf /root/mysqlserver.cnf
ADD setup.sh /root/mysql/setup.sh
RUN yum clean all
RUN chmod +x /root/mysql/setup.sh
EXPOSE 3306
CMD ["/root/mysql/setup.sh"]

1、构建使用的基础镜像为centos:latest

2、将下载好的rpm包copy到镜像中,然后进行安装

3、将需要执行的sql、配置文件,最后执行的shell脚本也copy到镜像中

在执行setup.sh脚本之前mariadb服务已经安装完毕,基本的数据目录还是/var/lib/mysql

[root@docker mysql]# cat server.cnf
[mysqld]
bind-address=0.0.0.0
console=1
general_log=1
general_log_file=/dev/stdout
#log_error=/dev/stderr
collation-server=utf8_unicode_ci
character-set-server=utf8
[root@docker mysql]# cat setup.sh
#!/bin/sh
chown -R mysql:mysql /var/lib/mysql
mysql_install_db --user=mysql > /dev/null
mysqld_safe --user=mysql &
sleep 5
mysql < /root/business.sql
sleep 5
ps -wef | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9
mysqld_safe --user=mysql
  • 由于需要重新将安装好的mariadb服务进行初始化,所以避免出错可以将数据目录进行权限授予 MySQL5.6的初始化为mysql_install_db加上一些参数

  • 初始化数据库后,后台开启mariadb服务,然后将sql进行执行:

[root@docker mysql]# cat business.sql
create database wordpress DEFAULT CHARACTER SET utf8;

USE mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

UPDATE user SET password=PASSWORD("root") WHERE user='root';
FLUSH PRIVILEGES;

sql内容就是创建的库和设置root账号的密码

sql执行完成后setup.sh脚本后面就是将mariadb进程杀掉,最后由前台运行mariadb服务,如果在启动容器中遇见了错误,请利用docker logs container_name/container_id

进行查看,根据错误提示进行解决


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值