在Docker中运行MySql
MySQL 官方也提供了各种版本的MySQL Image来供用户使用,我们可以使用如下命令来创建并运行一个MySQL Image:
docker run -it -p 3306:3306 --name mysqldb -e MYSQL_ROOT_PASSWORD=root mysql:latest
其中,-e MYSQL_ROOT_PASSWORD指定MYSQL Root用户的密码。
除此之外,可用的选项还有:MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD等。具体的可以查阅资料:https://hub.docker.com/_/mysql/
PS:Mysql镜像体积相对较大,由于国内众所周知的原因,我们可能下载的非常慢,我们可以使用DaoCloud提供的镜像加速服务,需要先登录官网注册一下http://www.daocloud.io/ ,然后到了控制台之后,上方有个加速器按钮,执行一下他给的那个命令就好了,大概就是curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://你的ID.m.daocloud.io,据说每个用户每个月是10GB的流量,一般来说,足矣~
验证你运行在Docker中的Mysql
运行完上面的命令,经过一段时间的等待,如果正常的话,Mysql镜像就已经运行运行起来了。
方法一:通过Mysql可视化连接工具
我们可以使用Mysql工具来验证,直接使用你Linux服务器的ip,通过3306端口和root用户去访问你运行在Docker中的Mysql数据库吧(突然感觉以后想用啥数据库,Docker里面跑个image就好了,简直爽的无法无天)~
方法二:通过mysql命令行验证
除了可视化工具,我们还可以通过Mysql的命令行工具来验证我们的Mysql服务是否正常在运行,但是因为我们的Docker在容器运行起来之后,这个shell就被他“霸占”了,我们不管敲啥,他这个shell都用不了~
- 首先需要通过快捷键:ctrl+p+q来返回宿主机的shell界面
- 然后我们可以通过docker exec来重启一个shell操作你正在运行的Mysql容器,我们先通过docker ps查询到Mysql容器的Container ID,然后执行命令:docker exec –it ContainerID /bin/bash 来新建一个shell UI
使用Docker exec命令可以执行Container中的一些命令,这里的/bin/bash代表的就是linux的shell程序
- 进入shell界面之后,我们通过命令mysql -uroot --p来进入mysql的管理界面,输入命令之后,系统会提示你输入mysql root账户的密码,输入我们在运行这个容器时候设定的密码即可
- 输入show databases;命令来查询Msyql中现有的数据库查询结果大概如下(注意每个命令后面必须加分号):
- 最后我们可以通过exit命令推出mysql管理控制台
方法三:新建一个container来访问mysql并验证
这个方法大概与方法二相同,我们还可以用另外一个Container,来通过Mysql命令行来操作我们的数据库。我们需要用到Link命令来建立两个容器直接的联系,
$ docker run -it --name jb91linkmysql --link jb91db:mysql --rm mysql:5.5.41 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
其中 --rm 指:完成操作后停止容器并从文件系统移除
sh 指执行后面的脚本,-c就是所要执行的命令(command)