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

相关推荐
沃尔威武6 小时前
数据库 Sinks(.net8)
数据库·.net·webview
问简7 小时前
docker 镜像相关
运维·docker·容器
Dreamboat¿7 小时前
SQL 注入漏洞
数据库·sql
Benszen8 小时前
Docker容器化技术实战指南
运维·docker·容器
曹牧8 小时前
Oracle数据库中,将JSON字符串转换为多行数据
数据库·oracle·json
被摘下的星星8 小时前
MySQL count()函数的用法
数据库·mysql
Hommy888 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
末央&9 小时前
【天机论坛】项目环境搭建和数据库设计
java·数据库
徒 花9 小时前
数据库知识复习07
数据库·作业
素玥9 小时前
实训5 python连接mysql数据库
数据库·python·mysql