新手把mysql装进docker中碰到的各种问题
前言
最近电脑经常关机要关好长时间,老是需要长按电源键强行关机。也不知道是怎么回事。
后来查看关机时的日志,发现是mysql停不掉。这可闹心了!怎么办?上网搜了搜也没有找到什么好的解决办法。总不能每次关机都要长按电源键吧?电脑那么贵,况且还是我自己的电脑,坏了怎么办?
把mysql删掉?作为一个写代码的,电脑里也不能不装mysql啊,天天要用的!装在虚拟机里?这个似乎可行,管你mysql能不能关掉,我把虚拟机停了就行啊。然后看了看自己电脑上装了1年多都没打开过的virtualbox,寻思着装在这里也不合适啊。我电脑硬盘就250G,就为了装个mysql还要给它分个十几G的硬盘,再分给它2G的内存,不合适不合适。那咋弄呢?扣了扣我的鼠标,想起来前1年跟风研究的docker,嗯~,就你了。
开始把mysql安装进docker
安装docker
docker的命令我是记不住啦~,上网搜了搜安装命令,还是很简单吗。命令一敲刷刷的就好了。(我的电脑装的deepin系统)
wget-qO-https://get.docker.com/|sh
然后需要给它启动起来,也是一条命令就好啦~
sudoservicedockerstart
docker运行Ubuntu
docker是安装好了,里面怎样跑一个系统呢?只有docker也没法运行mysql呀!这时候需要下载一个系统镜像,这里用Ubuntu的镜像。首先需要搜索一下有什么镜像可以用下面的命令在市场中搜索镜像。
//命令 sudodockersearchubuntu //结果 NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED ubuntuUbuntuisaDebian-basedLinuxoperatingsys…9583[OK] dorowu/ubuntu-desktop-lxde-vncDockerimagetoprovideHTML5VNCinterface…304[OK] rastasheep/ubuntu-sshdDockerizedSSHservice,builtontopofoffi…217[OK] consol/ubuntu-xfce-vncUbuntucontainerwith"headless"VNCsession…179[OK] ubuntu-upstartUpstartisanevent-basedreplacementforth…98[OK] ansible/ubuntu14.04-ansibleUbuntu14.04LTSwithansible97[OK]
这里搜到了一堆镜像,我们选排名第一的那个吧。
现在需要把这个镜像下载下来,用下面的命令:
sudodockerpullubuntu:18.04 //冒号后面的是版本号,不知道的话只能上网查了,不写的话下载的是最新的
但是。网上说由于一些不可抗力,导致国内下载镜像很慢,所以需要添加一个镜像。需要在/etc/docker的路径下添加一个文件:daemon.json,里面是镜像地址:
{ "registry-mirrors":["http://hub-mirror.c.163.com"] }
之后重启。然后执行上面下载镜像的命令,然后喝点咖啡等一会~~~。
经过下载之后,我们看一下现在电脑里有那些镜像,使用下面的命令:
sudodockerimages //结果 REPOSITORYTAGIMAGEIDCREATEDSIZE ubuntu18.047698f282e5242weeksago69.9MB
这里可以看到已经有一个Ubuntu版本是18.04的镜像。现在我们需要启动这个镜像。
//命令 sudodockerrun-it-dubuntu:18.04/bin/bash //解释 run:创建一个新的容器并运行一个命令 -it:以交互模式运行容器,并重新分配一个伪输入终端,代表-i-t --nameubuntu18:为容器指定一个名称 -d:后台运行容器 ubuntu:18.04:镜像名称 /bin/bash:运行镜像中的程序,没有的话镜像会直接停掉
现在镜像是启动成功了,但是我还要登进去才行呀。这时候需要查看现在有那些容器在运行,执行:
//命令 sudodockerps-a //解释 ps:列出容器 -a:显示所有的容器,包括未运行的 //结果 CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 1ce6fa95862cubuntu:18.04"/bin/bash"6minutesagoUp6minutesbrave_mendeleev
这里我们可以看到有一个NAME是brave_mendeleev的容器在运行之中。现在我们进入这个容器。执行下面的命令
//命令 sudodockerexec-itbrave_mendeleev/bin/bash //解释 brave_mendeleev:容器名称 exec:在运行的容器中执行命令 //结果 hjx@hjx-PC:/etc/docker$sudodockerexec-itbrave_mendeleev/bin/bash root@1ce6fa95862c:/#
这样我们就成功的登录到这个镜像为ubuntu18.04版本的容器里面了。现在我们就可以在里面安装mysql啦~
ubuntu容器中安装mysql
安装mysql我自己喜欢直接用apt安装。我在这里直接输入:
aptinstallmysql-server-5.7
后发现在容器中也是可以安装成功的。安装成功后,我们需要将容器中的mysql端口绑定到自己主机的3306端口上。这里的步骤是:
1:停掉容器(不停掉也行)
//停止容器 sudodockerstopbrave_mendeleev //解释 stop:容器生命周期管理命令,一共有下面命令构成: start:启动容器 stop:停止容器 restart:重启容器
2:将安装好mysql的容器提交为一个新的镜像
//命令 sudodockercommitbrave_mendeleevub/mysql //解释 commit:从容器创建一个新的镜像 ub/mysql:新的镜像名称
3:并绑定端口并启动新的镜像
额。。。这里玩崩了。。。没有弄成。/(ㄒoㄒ)/~~
我决定在启动ubuntu镜像的时候就绑定一下3306端口,然后在重新执行上面的操作。
经过漫长的操作。在删除了原有容器,重新绑定3306端口启动,登录容器,安装mysql后,完美的安装并运行成功。
更简单的方法
恩,直接搜索镜像mysql,然后启动就好了。这么简单