Docker 拉取 MySQL 5.7 镜像、启动容器并进入 MySQL

以下是拉取 MySQL 5.7 镜像、启动容器并进入 MySQL 的步骤:

一、拉取 MySQL 5.7 镜像(docker pull mysql:5.7

作用

从 Docker 镜像仓库(默认是 Docker Hub)下载 MySQL 5.7 版本的镜像到本地。

镜像是一个包含操作系统、MySQL 程序、配置文件等的只读模板,是启动容器的"模板"。

细节说明
  • mysql:5.7 是镜像的"名称:标签"格式:
    • mysql 是官方镜像的名称(由 MySQL 官方维护)。
    • 5.7 是标签(Tag),指定具体版本(若不写标签,默认拉取 latest 最新版,但生产环境建议指定版本避免兼容性问题)。
  • 执行后,Docker 会分层下载镜像(镜像由多个层组成,可复用),终端会显示下载进度,最终提示 Status: Downloaded newer image for mysql:5.7 表示成功。

二、启动 MySQL 容器(docker run ...

容器是镜像的运行实例,这一步是基于下载的镜像创建并启动一个可运行的 MySQL 服务。

完整命令拆解:

bash 复制代码
docker run -d \
  --name mysql57 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:5.7
参数详解
  1. -d--detach):

    让容器在后台运行( detached mode ),不会占用当前终端窗口,执行后会返回容器的唯一 ID(如 a1b2c3...)。

  2. --name mysql57

    给容器指定一个自定义名称(mysql57),方便后续通过名称操作容器(如停止、进入等)。若不指定,Docker 会自动生成一个随机名称(如 quirky_johnson)。

  3. -p 3306:3306--publish):

    端口映射,格式为 宿主机端口:容器内部端口

    • 容器内部的 MySQL 默认监听 3306 端口(这是 MySQL 的默认端口)。
    • 映射后,宿主机的 3306 端口会转发到容器的 3306 端口,外部设备(如宿主机上的 Navicat、程序)可通过 localhost:3306 访问容器内的 MySQL。
    • 若宿主机 3306 端口已被占用(如本地已安装 MySQL),可修改宿主机端口,例如 -p 3307:3306,此时通过 localhost:3307 访问。
  4. -e MYSQL_ROOT_PASSWORD=123456--env):

    设置环境变量,MySQL 镜像启动时会读取该变量初始化 root 用户密码。

    • 这是 MySQL 官方镜像的"约定":必须通过该环境变量设置 root 密码,否则容器启动会失败(会报错提示需要设置密码)。
    • 生产环境建议使用更复杂的密码,避免明文暴露(可后续通过 docker secrets 等方式优化)。
  5. 最后的 mysql:5.7

    指定基于哪个镜像启动容器(即第一步拉取的镜像)。

验证容器是否启动成功

执行 docker ps 命令,查看运行中的容器:

bash 复制代码
docker ps

若输出中包含 mysql57STATUSUp X seconds,说明容器启动成功。

若未显示,执行 docker ps -a 查看所有容器(包括停止的),并通过 docker logs mysql57 查看日志排查错误(常见错误:密码未设置、端口被占用)。

三、进入容器并登录 MySQL

容器启动后,MySQL 服务在容器内部运行,需进入容器内部操作。

1. 进入容器(docker exec -it mysql57 /bin/bash
  • docker exec:在运行中的容器内执行命令。
  • -it:两个参数的组合(-i 保持标准输入打开,-t 分配伪终端),让我们能和容器内的终端交互(类似"登录"容器)。
  • mysql57:目标容器的名称(或容器 ID)。
  • /bin/bash:在容器内执行的命令,即启动一个 bash 终端(容器内的操作系统通常是精简的 Linux,支持 bash 交互)。

执行后,终端提示符会变为类似 root@a1b2c3:/#,表示已进入容器内部。

2. 登录 MySQL(mysql -u root -p

这是 MySQL 自带的登录命令,在容器内执行:

  • -u root:指定登录用户为 root(MySQL 管理员用户)。
  • -p:表示需要输入密码(执行后会提示 Enter password:,输入步骤二中设置的 123456 即可)。

登录成功后,终端提示符会变为 mysql>,此时可执行 MySQL 命令(如 show databases; 查看数据库)。

补充:退出与停止操作

  • 退出 MySQL:在 mysql> 提示符下输入 exit; 或按 Ctrl+D
  • 退出容器:在容器的 bash 终端输入 exit 或按 Ctrl+D
  • 停止容器:docker stop mysql57(通过名称停止)。
  • 重新启动容器:docker start mysql57

通过以上步骤,你可以在 Docker 中快速搭建一个隔离的 MySQL 5.7 环境,适合开发、测试场景,避免直接在宿主机安装带来的环境冲突问题。

相关推荐
大猫和小黄10 分钟前
若依微服务Cloud中Quartz-Job模块适配OpenGauss数据库
数据库·微服务·opengauss·quartz·定时任务·若依·job
G_H_S_3_11 分钟前
【网络运维】Docker网络:基础与实战
linux·运维·网络·docker
加藤不太惠14 分钟前
docker简单了解使用
运维·docker·容器
悟空码字14 分钟前
MySQL分库分表,从“一室一厅”到“豪华别墅区”的数据库升级之旅
java·后端·mysql
奔跑的小十一25 分钟前
ShardingSphere-JDBC 开发手册
java·数据库
lkbhua莱克瓦2425 分钟前
基础-MySQL概述
java·开发语言·数据库·笔记·mysql
姓蔡小朋友28 分钟前
MySQL增删查改、多表查询
数据库·mysql
<e^πi+1=0>31 分钟前
Docker部署Lighthouse CI Server总结
ci/cd·docker·容器
Knight_AL39 分钟前
Maven <dependencyManagement>:如何在多模块项目中集中管理依赖版本
java·数据库·maven
TAEHENGV40 分钟前
导入导出模块 Cordova 与 OpenHarmony 混合开发实战
android·javascript·数据库