Step 1 下载镜像并初始化
下载镜像
docker pull mysql
下载官方的mysql docker镜像
初始化mysql
docker run -v /data/var/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=XXXXXX mysql
为mysql镜像设置初始密码,-v 命令使用数据卷(Data volume)指定本地的文件目录:/data/var/mysql/ 与容器内部的mysql数据目录建立映射(以便数据能够持久化)
关闭容器
docker stop [CONTAINER ID]
Step 2 配置MySQL
以交互式模式启动mysql镜像
docker run -it -v /data/var/mysql/:/var/lib/mysql mysql /bin/bash
启动时,指定使用 -v 命令以本地的文件目录:/data/var/mysql/ 作为 数据卷(Data volume)启动docker镜像,-iv 命令指定以交互式终端形式在镜像内部运行bash
【docker内】在镜像内部启动mysql守护进程
mysqld_safe&
启动mysqld作为后台进程
【docker内】登录mysql
mysql -uroot -pXXXXXX
【docker内】创建mysql账号,设置访问权限
grant all privileges on *.* to 'USER_NAME'@'%' identified by 'PASSWORD';
flush privileges;
将容器内的mysql配置文件拷贝到本地
docker cp [CONTAINER ID]:/etc/mysql/my.cnf /data/local/my.cnf
将docker内的mysql配置文件拷贝到本地的文件目录:/data/local/my.cnf
注意:我拷贝完之后不知道为什么my.cnf变成一个目录了,需要在my.cnf目录下的my.cnf文件单独mv出来
关停容器
docker stop [CONTAINER ID]
Step 3 正式启动mysql容器
以守护进程方式启动mysql镜像
docker run -d -p 5506:3306 -v /data/var/mysql/:/var/lib/mysql -v /data/local/my.cnf:/etc/mysql/my.cnf mysql
-d 命令以守护进程形式启动mysql镜像
-p 命令完成本地端口与镜像端口的映射(本例中将镜像的3306端口映射为了本地的5506端口,外部应以5506访问)
-v 命令使用数据卷(Data volume)挂载本地的文件目录,作为mysql容器的数据文件和配置文件
all is done 可以正常访问mysql了
References:
[1] docker如何简单部署mysql: http://blog.csdn.net/ownfire/article/details/50274335