当前位置: 首页 > news >正文

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 服务。
完整命令拆解:

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 命令,查看运行中的容器:

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

http://www.dtcms.com/a/519986.html

相关文章:

  • 苏州建设网站制作wordpress做教育网站
  • 代理记账网站模板如何自己开网址
  • 【Linux基础知识系列:第一百五十三篇】现代网络管理:NetworkManager与nmcli
  • D028 vue+django知识图谱可视化系统|AI 相关
  • 秒杀系统设计:打造高并发、高可用架构的实战指南
  • 当无符号与有符号整数相遇:C++中的隐式类型转换陷阱
  • Maya Python入门:创建球体polySphere、创建工具架、编辑工具架、查看命令的长名称
  • 邯郸市做网站的公司广州手机网站建设报价
  • 数据结构3:复杂度
  • 记录一下c中数据元素 值传递和地址传递
  • springboot高校网上订餐平台的设计与实现(代码+数据库+LW)
  • Datawhale人工智能的数学基础 202510第4次作业
  • 公司网站建立费用太原seo团队
  • 做视频网站的备案要求平面设计兼职接单
  • HarmonyOS分布式Kit:解锁跨设备协同开发的无限可能
  • 南京制作网站优化绵阳专业网站建设
  • perplexity的comet AI浏览器无法下载,一直是等待网络连接
  • 【Day 82】虚拟化-虚拟网络
  • 哈尔滨口碑好的建站公司佛山招收网站设计
  • 【Linux基础知识系列:第一百五十一篇】启动加载器GRUB配置
  • 2025 前端框架决战:Vue 与 React 分析优缺点及使用场景!
  • 频繁读写文件,page cache不及时释放的后果
  • 网站不同网站建设归工商局管还是工信局管
  • Java 虚拟线程(Virtual Threads)正式落地!Spring Boot 如何拥抱 Project Loom?
  • 石家庄网站开发工程师招聘网优秀包装设计案例
  • iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固 无源码混淆
  • win10桌面windows bing图标如何删除
  • Gin笔记一之项目建立与运行
  • JSON 核心知识点
  • precompilation-headers 以及在cmake中的实现