以下是拉取 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
参数详解
-
-d(--detach):让容器在后台运行( detached mode ),不会占用当前终端窗口,执行后会返回容器的唯一 ID(如
a1b2c3...)。 -
--name mysql57:给容器指定一个自定义名称(
mysql57),方便后续通过名称操作容器(如停止、进入等)。若不指定,Docker 会自动生成一个随机名称(如quirky_johnson)。 -
-p 3306:3306(--publish):端口映射,格式为
宿主机端口:容器内部端口。- 容器内部的 MySQL 默认监听 3306 端口(这是 MySQL 的默认端口)。
- 映射后,宿主机的 3306 端口会转发到容器的 3306 端口,外部设备(如宿主机上的 Navicat、程序)可通过
localhost:3306访问容器内的 MySQL。 - 若宿主机 3306 端口已被占用(如本地已安装 MySQL),可修改宿主机端口,例如
-p 3307:3306,此时通过localhost:3307访问。
-
-e MYSQL_ROOT_PASSWORD=123456(--env):设置环境变量,MySQL 镜像启动时会读取该变量初始化 root 用户密码。
- 这是 MySQL 官方镜像的"约定":必须通过该环境变量设置 root 密码,否则容器启动会失败(会报错提示需要设置密码)。
- 生产环境建议使用更复杂的密码,避免明文暴露(可后续通过
docker secrets等方式优化)。
-
最后的
mysql:5.7:指定基于哪个镜像启动容器(即第一步拉取的镜像)。
验证容器是否启动成功
执行 docker ps 命令,查看运行中的容器:
bash
docker ps
若输出中包含 mysql57 且 STATUS 为 Up 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 环境,适合开发、测试场景,避免直接在宿主机安装带来的环境冲突问题。