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 环境,适合开发、测试场景,避免直接在宿主机安装带来的环境冲突问题。

相关推荐
big男孩4 小时前
Docker使用环境变量的整理
docker
安卓开发者5 小时前
Docker与Nginx:现代Web部署的完美二重奏
前端·nginx·docker
回忆是昨天里的海6 小时前
k8s部署容器化应用-nginx2
云原生·容器·kubernetes
czhc11400756636 小时前
Linux1023 mysql 修改密码等
android·mysql·adb
低音钢琴6 小时前
【从零开始构建性能测试体系-08】如何诊断性能瓶颈:从服务器到数据库的全方位分析
服务器·数据库·php
蜡笔小炘6 小时前
SQL sever数据库--第三次作业
数据库·sql·oracle
xuejianxinokok6 小时前
io_uring 快吗? Postgres 17 与 18 的基准测试
数据库·后端·postgresql
PieroPc6 小时前
用Python Streamlit Sqlite3 写一个简单商品管理系统
数据库·python·sqlite·streamlit
SamDeepThinking6 小时前
MySQL InnoDB Redo Log简单介绍
mysql