大家好,我是前端西瓜哥。

本文是使用 Docker 安装运行 MySQL 的教程。

默认读者已经对 docker 会一些简单操作,比如会查看 container 列表、删除 container 之类的简单管理命令。

Docker 的一些概念

先简单说 Docker 的几个概念:

image:镜像。你可以把它理解为安装包。你要运行 mysql,首先得有一个 image。这里你需要注意软件的版本问题。

container:容器。mysql 通过 image 安装到的一个虚拟容器。Docker 的牛逼之处就是它可以将不同的服务隔离,放到不同容器。这个容器可以当作一个小型的独立的操作系统。容器可以启动、暂停、销毁。通常我们会将容器内部的端口映射到你的原生操作系统的端口上,实现访问。

volumes:数据卷。像是 mysql 里面产生的数据,可以通过 volume 的方式映射到宿主环境中,这样 container 销毁数据还能保留下来。

安装命令

首先安装并启动 Docker,建议下载支持可视化的桌面端。

下面进入正题。

docker run -p 3306:3306 --name app-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  • run:构建 container;

  • -p <宿主端口>/<container端口>:将 container 指定端口映射到宿主的 127.0.0.1 的特定端口;

  • --name <容器名>:指定容器的名字。可以不指定,这时 docker 会给你瞎掰一个名字;

  • -e <key>=<value>:设置环境变量,container 会基于这些变量做初始化。这里我设置了 mysql 的 root 账号初始密码;

  • -d 后台运行;

  • <镜像名称:标签>:基于哪个 image 构建,我这里指定了 mysql,版本为 5.7。不指定版本会下载最新版。这个必须放到末尾。

执行后,docker 会在本地看有没有 mysql:5.7 的 image,如果没有就会下载,然后再基于这个 image 构建出我们的容器实例。

更多 docker run 命令说明请查阅官方文档:

https://docs.docker.com/engine/reference/commandline/run/

如果你用的是 ARM 架构 的计算机(比如 Macbook Pro M1),可能会失败:

Unable to find image 'mysql:5.7' locally
5.7: Pulling from library/mysql
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
See 'docker run --help'.

因为某个 image 可能不支持 ARM。最新的几个版本是支持的 ARM,但我这个 5.7 比较古老,就不支持了。

图片

图片

好在 Macbook Pro M1 支持用 x86 转译为 ARM,安装 x86 版本也无所畏惧。所以我们可以加上 --platform linux/amd64来指定平台类型,而不是默认的系统来自动设置,这样就能找到 image。

docker run -p 3306:3306 --name app-mysql --platform linux/amd64 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

然后我们就可以在 container 列表看到这个 app-mysql 成功启动了。

图片

命令工具的查看写法为:

docker container ls

图片

接着就是用 mysql 客户端去通过映射出来的 3306 端口进行连接。

mysql 客户端要自行安装,可以装命令行工具,或者可视化工具,macOS 下我推荐 Sequel Ace。

持久化数据

容器中的生成的数据会保留在 container 中。如果我们销毁了 container,之前创建的表和数据都会丢失。

如果你希望将它们留下来,可以考虑做一个文件系统的映射。你需要加一个 -v 选项。

-v <宿主 volume>:<容器目录>:指定的宿主的目录就会映射到容器目录上,里面的数据在 contaienr 销毁后依旧存在。

docker run -p 3306:3306 --name app-mysql -e MYSQL_ROOT_PASSWORD=123456 -v app-mysql:/var/lib/mysql -d mysql:5.7

这里我们让 container 下的 /var/lib/mysql 目录保存到名为 app-mysql 的 volume 下。可以通过 docker volume ls 命令查看有哪些 volume。

也可以指定宿主环境的一个绝对路径,让文件都保存在这个位置上,这样的话它们不会出现在 volume 列表中。

查看支持版本

再简单说说怎么去查看 docker 支持的 mysql 版本。

我们可以去官网找到 mysql 的页面:

https://hub.docker.com/search?q=mysql

点进去 mysql 就能看到它支持的 tag:

图片

如果你找不到你需要的版本,或者比较特殊,就需要自己做 image 了。

结尾

至此,mysql 就算是成功安装运行了。

我是前端西瓜哥,欢迎关注我,学习更多前端知识。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐