• 如何用 Docker 安装运行 mysql?


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

    本文是使用 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
    
    • 1
    • run:构建 container;

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

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

    • -e =设置环境变量,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'.
    
    • 1
    • 2
    • 3
    • 4

    因为某个 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
    
    • 1

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

    图片

    命令工具的查看写法为:

    docker container ls
    
    • 1

    图片

    接着就是用 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
    
    • 1

    这里我们让 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 就算是成功安装运行了。

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

  • 相关阅读:
    AQS是什么?AbstractQueuedSynchronizer之AQS原理及源码深度分析
    通配符指什么呢?
    有一个企微运营机器人同事是一种什么体验?
    深入理解常见应用级算法思想
    C/S架构学习之广播
    css如何将border线加到元素内部,占内边距,不占外边距
    一零四、大数据可视化技术与应用实训(展示大屏幕)
    Linux Shell 实现一键部署podman
    为什么SDWAN成为了组网发展大趋势呢?
    找链表的交点
  • 原文地址:https://blog.csdn.net/fe_watermelon/article/details/126459653