服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - 新手把mysql装进docker中碰到的各种问题

新手把mysql装进docker中碰到的各种问题

2020-09-29 16:12何白白 Mysql

这篇文章主要给大家介绍了新手第一次把mysql装进docker中可能碰到的各种问题,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

最近电脑经常关机要关好长时间,老是需要长按电源键强行关机。也不知道是怎么回事。

后来查看关机时的日志,发现是mysql停不掉。这可闹心了!怎么办?上网搜了搜也没有找到什么好的解决办法。总不能每次关机都要长按电源键吧?电脑那么贵,况且还是我自己的电脑,坏了怎么办?

把mysql删掉?作为一个写代码的,电脑里也不能不装mysql啊,天天要用的!装在虚拟机里?这个似乎可行,管你mysql能不能关掉,我把虚拟机停了就行啊。然后看了看自己电脑上装了1年多都没打开过的virtualbox,寻思着装在这里也不合适啊。我电脑硬盘就250G,就为了装个mysql还要给它分个十几G的硬盘,再分给它2G的内存,不合适不合适。那咋弄呢?扣了扣我的鼠标,想起来前1年跟风研究的docker,嗯~,就你了。

开始把mysql安装进docker

安装docker

docker的命令我是记不住啦~,上网搜了搜安装命令,还是很简单吗。命令一敲刷刷的就好了。(我的电脑装的deepin系统)

?
1
wget -qO- https://get.docker.com/ | sh

然后需要给它启动起来,也是一条命令就好啦~

?
1
sudo service docker start

docker运行Ubuntu

docker是安装好了,里面怎样跑一个系统呢?只有docker也没法运行mysql呀!这时候需要下载一个系统镜像,这里用Ubuntu的镜像。首先需要搜索一下有什么镜像可以用下面的命令在市场中搜索镜像。

?
1
2
3
4
5
6
7
8
9
10
//命令
sudo docker search ubuntu
//结果
NAME       DESCRIPTION     STARS  OFFICIAL  AUTOMATED
ubuntu       Ubuntu is a Debian-based Linux operating sys… 9583  [OK] 
dorowu/ubuntu-desktop-lxde-vnc    Docker image to provide HTML5 VNC interface … 304     [OK]
rastasheep/ubuntu-sshd     Dockerized SSH service, built on top of offi… 217     [OK]
consol/ubuntu-xfce-vnc     Ubuntu container with "headless" VNC session… 179     [OK]
ubuntu-upstart      Upstart is an event-based replacement for th… 98   [OK] 
ansible/ubuntu14.04-ansible    Ubuntu 14.04 LTS with ansible   97     [OK]

这里搜到了一堆镜像,我们选排名第一的那个吧。

现在需要把这个镜像下载下来,用下面的命令:

?
1
2
sudo docker pull ubuntu:18.04
//冒号后面的是版本号,不知道的话只能上网查了,不写的话下载的是最新的

但是。网上说由于一些不可抗力,导致国内下载镜像很慢,所以需要添加一个镜像。需要在 /etc/docker 的路径下添加一个文件:daemon.json,里面是镜像地址:

?
1
2
3
{
 "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

之后重启。然后执行上面下载镜像的命令,然后喝点咖啡等一会~~~。

经过下载之后,我们看一下现在电脑里有那些镜像,使用下面的命令:

?
1
2
3
4
sudo docker images
//结果
REPOSITORY  TAG   IMAGE ID  CREATED  SIZE
ubuntu  18.04  7698f282e524 2 weeks ago  69.9MB

这里可以看到已经有一个Ubuntu版本是18.04的镜像。现在我们需要启动这个镜像。

?
1
2
3
4
5
6
7
8
9
//命令
sudo docker run -it -d ubuntu:18.04 /bin/bash
//解释
run  : 创建一个新的容器并运行一个命令
-it  : 以交互模式运行容器,并重新分配一个伪输入终端,代表-i -t
--name ubuntu18: 为容器指定一个名称
-d  : 后台运行容器
ubuntu:18.04 : 镜像名称
/bin/bash : 运行镜像中的程序,没有的话镜像会直接停掉

现在镜像是启动成功了,但是我还要登进去才行呀。这时候需要查看现在有那些容器在运行,执行:

?
1
2
3
4
5
6
7
8
9
//命令
sudo docker ps -a
//解释
ps : 列出容器
-a : 显示所有的容器,包括未运行的
 
//结果
CONTAINER ID IMAGE  COMMAND   CREATED  STATUS  PORTS    NAMES
1ce6fa95862c ubuntu:18.04 "/bin/bash"  6 minutes ago Up 6 minutes      brave_mendeleev

这里我们可以看到有一个NAME是brave_mendeleev的容器在运行之中。现在我们进入这个容器。执行下面的命令

?
1
2
3
4
5
6
7
8
9
//命令
sudo docker exec -it brave_mendeleev /bin/bash
//解释
brave_mendeleev: 容器名称
exec  : 在运行的容器中执行命令
 
//结果
hjx@hjx-PC:/etc/docker$ sudo docker exec -it brave_mendeleev /bin/bash
root@1ce6fa95862c:/#

这样我们就成功的登录到这个镜像为ubuntu18.04版本的容器里面了。现在我们就可以在里面安装mysql啦~

ubuntu容器中安装mysql

安装mysql我自己喜欢直接用 apt安装。我在这里直接输入:

?
1
apt install mysql-server-5.7

后发现在容器中也是可以安装成功的。安装成功后,我们需要将容器中的mysql端口绑定到自己主机的3306端口上。这里的步骤是:

1:停掉容器(不停掉也行)

?
1
2
3
4
5
6
7
//停止容器
sudo docker stop brave_mendeleev
//解释
stop : 容器生命周期管理命令,一共有下面命令构成:
 start : 启动容器
 stop : 停止容器
 restart : 重启容器

2:将安装好mysql的容器提交为一个新的镜像

?
1
2
3
4
5
//命令
sudo docker commit brave_mendeleev ub/mysql
//解释
commit : 从容器创建一个新的镜像
ub/mysql : 新的镜像名称

3:并绑定端口并启动新的镜像

额。。。这里玩崩了。。。没有弄成。/(ㄒoㄒ)/~~

我决定在启动ubuntu镜像的时候就绑定一下3306端口,然后在重新执行上面的操作。

经过漫长的操作。在删除了原有容器,重新绑定3306端口启动,登录容器,安装mysql后,完美的安装并运行成功。

更简单的方法

恩,直接搜索镜像mysql,然后启动就好了。这么简单

?
1
2
3
4
5
6
7
//下载mysql5.7镜像
sudo docker pull mysql:5.7
 
//绑定3306端口启动
sudo docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
//解释
-e MYSQL_ROOT_PASSWORD=123456 : 初始化 root 用户的密码,

之后还有其他的一堆参数,这里我用不到,就不写啦

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:https://www.hebaibai.com/?p=435

延伸 · 阅读

精彩推荐
  • Mysqlmysql 不能插入中文问题

    mysql 不能插入中文问题

    当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column ...

    MYSQL教程网5722019-11-25
  • Mysql解决MySQl查询不区分大小写的方法讲解

    解决MySQl查询不区分大小写的方法讲解

    今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Veir_dev5592019-06-25
  • MysqlMySQL锁的知识点总结

    MySQL锁的知识点总结

    在本篇文章里小编给大家整理了关于MySQL锁的知识点总结以及实例内容,需要的朋友们学习下。...

    别人放弃我坚持吖4362020-12-14
  • Mysql浅谈mysql 树形结构表设计与优化

    浅谈mysql 树形结构表设计与优化

    在诸多的管理类,办公类等系统中,树形结构展示随处可见,本文主要介绍了mysql 树形结构表设计与优化,具有一定的参考价值,感兴趣的小伙伴们可以参...

    小码农叔叔5242021-11-16
  • MysqlERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 2 ...

    MYSQL教程网6402020-03-13
  • Mysql详解MySQL中的分组查询与连接查询语句

    详解MySQL中的分组查询与连接查询语句

    这篇文章主要介绍了MySQL中的分组查询与连接查询语句,同时还介绍了一些统计函数的用法,需要的朋友可以参考下 ...

    GALAXY_ZMY5432020-06-03
  • MysqlMySQL数据库varchar的限制规则说明

    MySQL数据库varchar的限制规则说明

    本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。 ...

    mysql技术网4192019-11-23
  • MysqlMySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码

    这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    逆心2962019-06-23