1. 安装docker
安装过程: centos6 安装docker17.06
2. 安装mysql
service docker start
docker pull mysql/mysql-server:5.7
3. 启动mysql5.7并使用端口映射
假设测试mysql的路径是:/home/mysql_test/mysql_5.7/(如果不是需要修改以下脚本的base_dir), 在这个目录下创建run.sh,内容如下:
#!/bin/bash
if [ "$1" = "" ] || [ "$1" = '3306' ];then
echo -p 'examples: ./run.sh 33060; port must not a number and not equal with 3306!'
fi
#you can update this test dir for another dir
base_dir=/home/mysql_test/mysql_5.7/
if [ ! -d $base_dir ];then
echo "$base_dir not exist, please update base_dir in the shell!"
exit
fi
cd $base_dir
if [ ! -d $1 ];then
mkdir $1
#else
#echo "$1 has exist, please input another port number!"
fi
base_dir=${base_dir}$1
conf_dir_name=conf
data_dir_name=data
conf_dir=${base_dir}/$conf_dir_name
data_dir=${base_dir}/$data_dir_name
port=$1:3306
container=mysql/mysql-server:5.7
name=db$1
cd $base_dir
if [ ! -d $conf_dir_name ];then
mkdir $conf_dir_name
fi
cd $conf_dir_name
if [ ! -f 'my.cnf' ];then
printf "[mysqld]\nuser=mysql\n[mysqld_safe]\n" > my.cnf
fi
cd $base_dir
if [ ! -d $data_dir_name ];then
mkdir $data_dir_name
fi
docker rm -f $name
docker run --name=$name \
--mount type=bind,src=${conf_dir}/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=$data_dir,dst=/var/lib/mysql \
-p $port -d $container
需要注意的是使用mount,bind时,src path中的文件或者文件夹必须存在,且对于mysql来说需要保证配置文件的路径和data的路径不在一个目录下。
执行如下命令来启动一个实例
#如下文件没有的话需要修改run.sh中的base_dir的位置
cd /home/mysql_test/mysql_5.7
#第二个参数是启动的mysql实例3306映射到的主机端口,container名称为db+第二个参数。
./run.sh 33060
查看实例是否启动:
[root@bogon mysql_5.7]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61842bf2614e mysql/mysql-server:5.7 "/entrypoint.sh my..." 25 minutes ago Up 25 minutes (healthy) 33060/tcp, 0.0.0.0:33060->3306/tcp db33060
可以看到mysql1镜像的3306端口映射到了主机的33060端口。
下来访问mysql并修改默认密码。
默认密码查看命令:
docker logs db33060 2>&1 | grep GENERATED
#[Entrypoint] GENERATED ROOT PASSWORD: ^uR-YmsOfEBAD-upuKeGoK$EJnu
访问mysql并配置远程访问:
docker exec -it mysql1 mysql -uroot -p
输入:123456
>mysql: ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
>mysql: grant all privileges on *.* to root@'%' identified by '654321' with grant option;
通过mycat 访问 主机,用户名:root, 密码:654321。
如果提示连接成功则证明mysql创建成功。
参考:
1.https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/docker-mysql-getting-started.html