根据上一章讲的,现在装个MySql数据库就简单了,也就是找个MySql的容器镜像,拉取下来以后,以一个容器启动就可以了,具体步骤如下:
一、先到Docker Hub上搜索一下MySql的镜像,看看它的说明等信息,怎么使用安装等。
下面的截图就是mysql在镜像仓库中的说明,滚轮往下翻就可以看到,我是用谷歌浏览器自动翻译的 ,我截取了两个重要的地方标注了一下
在上面三张截图中是官方告诉我们启动MySql时,如果你想要设置密码,或者设置数据存储位置,或者配置文件储存位置时需要什么命令,后面我会综合一下贴出启动命令。
二、.拉取镜像,当然现在我们拉取镜像有两种方法了:
1.一种是在服务器上用命令拉取,就像上一章拉取Portainer一样,我们这里没跟版本号,默认拉取最新镜像:
拉取完成后,可以通过 docker images命令查看,如下图
2. 也可以在我们之前装的Portainer上查看,如下图:
当然在这里也可以管理我们的镜像,如拉取新的镜像,删除不用的镜像等等。
2.还有另一种方式,在Portainer上通过可视化的交互界面来拉取镜像,操作如下:
三、启动容器
现在我们启动容器和拉取镜像一样,可以有两种方式,一种是在服务器上通过命令,一种是通过Portainer来启动。
1.通过命令启动
在本文开头,第一大点上我们浏览了mysql的说明文件,上面也有好多启动的命令参数,那我这里总结了一般情况下的启动方式:
我们一般在启动MySql的时候至少要干三件重要的事情:
1.密码要设置一下,目的不用说了。
2.配置文件要存到物理机上,防止容器删除后配置数据丢失。
3.数据文件要存到物理机上,防止容器删除后数据就没了。
所以综合以上三点的启动代码就是:
docker run
-d
-p 3306:3306
--restart=always
--name mysql
-e MYSQL_ROOT_PASSWORD=123456
-v=/root/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v=/root/mysql/data/:/var/lib/mysql/
-v=/etc/localtime:/etc/localtime
mysql:latest
这里面的参数有:-d,-p,--name,-e,-v,可以自行度娘解释很多。
注意:启动命令中
-v=/root/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v=/root/mysql/data/:/var/lib/mysql
这两行是挂在目录,当宿主机目录下是空的时候容器是启动不起来的,还需要做一部操作,就是先去掉这两行命令让容器启动,然后进入容器,用docker cp 命令(改名了用法可以度娘),把容器中的my.cnf 文件拷贝到宿主机对应的目录下(我这里是/root/mysql/conf/目录下),再把容器中/var/lib/mysql目录下的所有文件拷贝到宿主机将要挂在的目录下(我这里是/root/mysql/data/)。最后再把刚刚启动的mysql容器删除掉,重新执行完整的命令,就能正常挂在目录了。
-v=/etc/localtime:/etc/localtime
挂载容器时间与物理机时间一致,解决时间差8个小时的问题
以上目的是为了让数据库文件存到宿主机(物理机)上,这样保证数据文件不丢失。
启动成功后会返回一个字符串,然后可以输入命令docker ps查看,如下图 :
注意状态和端口,是否正常,如果启动后有正常返回一个字符串,这里有看不到,那么请输入命令docker ps -a 查看所有容器,包含已停止的,因为有可能你刚刚启动命令有问题,启动后马上就停止了。
这个时候你可以把这个停止的容器(有问题,启动不起来)删掉,重新启动一个新的。删除命令docker rm -f 容器ID。命令不懂可以度娘。
2.通过Portainer启动
最后适完成后,选择提交创建。
创建成功后,回到容器管理界面查看是否运行正常:
然后开通物理机的3306端口:
最后再用数据库连接软件通过公网IP(xxx.xxx.xxx.xxx)连接数据库:
至此,MySQL就全部安装完成。
补充:在启动容器之前我们可以不用专门去拉取对应的镜像,我们可以启动一个容器就行,然后启动容器时会自动检查本地是否有对应版本的镜像,如果没有会自动拉取的。
下一章我们安装一个Apollo配置服务中心。