docker-制作自定义mysql镜像

#docker-制作自定义mysql镜像

封装的dockerfile目录

root@ubuntu14:/opt/BI/mysql# tree /opt/BI/mysql/
/opt/BI/mysql/
├── dockerfile
├── install_data.sh
├── mysqld.cnf
├── pure.sql
└── vbap.sql

其中dockerfile内容为:

root@ubuntu14:/opt/BI/mysql# cat dockerfile
FROM mysql
COPY ./install_data.sh /docker-entrypoint-initdb.d/install_data.sh
COPY ./*.sql /opt/
COPY ./mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf

其中install_data.sh内容为:

 #!/bin/bash
 mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF
 source /opt/pure.sql
 source /opt/vbap.sql

两个SQL文件为要做初始化用的SQL文件,注意SQL前部分要创建自定义的数据库

 CREATE DATABASE IF NOT EXISTS pure DEFAULT CHARACTER SET utf8;
 USE pure;
 SET NAMES utf8;

上面的部分就能够实现需求一,实现在容器启动时,创建自定义的数据库和插入数据等操作

修改mysql配置实现字符集统一为utf8,需求将自定义的mysqld.cnf文件导入镜像

 # set client default character
 [mysql]
 default-character-set=utf8
 [mysqld]
 pid-file = /var/run/mysqld/mysqld.pid
 socket = /var/run/mysqld/mysqld.sock
 datadir = /var/lib/mysql
 log-error = /var/log/mysql/error.log
 # By default we only accept connections from localhost
 bind-address = 0.0.0.0
 # Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
 # set 1 means Ignore capital letters and lowercase letters
 lower_case_table_names=1
 # set client default character
 character-set-server = utf8

打包生成镜像

执行docker build命令,注意后面的点,表示以当前目录作为上下文内容

 docker build -t [自定义镜像名称]:[自定义标签] .

导出镜像

将镜像打成tar包,方便在其他环境中使用

 docker save [自定义镜像名称]:[自定义标签] > [自定义镜像名称]-[自定义标签].tar

或者

 docker save [自定义镜像名称]:[自定义标签] | gzip > [自定义镜像名称]-[自定义标签].tar.gz

导入镜像

使用docker load命令

 docker load -i [自定义镜像名称]-[自定义标签].tar.gz

组合使用

 docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker load'

检查mysql属性

 show variables like "%charac%";
Table of Contents