如何用 Docker 安装运行 mysql?
大家好,我是前端西瓜哥。本文是使用 Docker 安装运行 MySQL 的教程。默认读者已经对 docker 会一些简单操作,比如会查看 container 列表、删除 container 之类的简单管理命令。
大家好,我是前端西瓜哥。
本文是使用 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 就算是成功安装运行了。
我是前端西瓜哥,欢迎关注我,学习更多前端知识。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)