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

Docker 镜像维护指南:从配置优化到 MySQL 实战运行

Docker 镜像维护指南:从配置优化到 MySQL 实战运行

  • Docker 镜像维护指南:从配置优化到 MySQL 实战运行
    • 一、Docker 镜像维护的核心价值
    • 二、镜像维护前置配置:解决拉取失败问题
      • 1. 检查当前镜像源配置
      • 2. 配置国内镜像加速器
        • (1)编辑配置文件
        • (2)重启 Docker 服务使配置生效
        • (3)验证配置是否生效
    • 三、实战:拉取 MySQL 镜像并配置端口映射
      • 1. 拉取 MySQL 镜像(指定固定版本)
      • 2. 启动 MySQL 容器(配置端口映射与环境变量)
        • 命令参数说明:
      • 3. 验证容器运行状态
        • (1)查看容器是否启动成功
        • (2)测试宿主机端口映射是否生效
        • (3)进入容器验证 MySQL 服务
    • 四、镜像与容器的日常维护操作
      • 1. 镜像维护:清理无用镜像
      • 2. 容器维护:启停、重启与日志查看
    • 五、常见问题排查

Docker 镜像维护指南:从配置优化到 MySQL 实战运行

在 Docker 日常使用中,镜像维护是保障容器服务稳定、高效运行的核心环节。从镜像源配置、镜像拉取优化,到容器启动后的端口映射与基础运维,每一步都影响着服务可用性。本文将以 Docker 镜像维护核心要点 为基础,结合 docker pull mysql 实战案例,详细演示如何解决镜像拉取问题、配置端口映射(宿主机 3307 映射容器 3306),最终实现 MySQL 容器的成功运行。

一、Docker 镜像维护的核心价值

Docker 镜像作为容器的“模板”,其维护质量直接决定了容器服务的稳定性与效率:

  • 加速拉取:通过配置镜像加速器,解决官方仓库访问慢、连接超时问题;
  • 版本管控:避免使用 latest 标签(默认标签),指定固定版本(如 mysql:8.0),防止版本迭代导致的兼容性问题;
  • 安全清洁:定期清理无用镜像(docker rmi)、悬空镜像(docker image prune),释放宿主机磁盘空间;
  • 私有管理:对企业内部镜像,通过私有仓库(如 Harbor)管理,保障镜像安全性。

二、镜像维护前置配置:解决拉取失败问题

在执行 docker pull mysql 前,多数用户会遇到 “连接超时”“拒绝连接” 等问题(如官方仓库 index.docker.io 访问不稳定),核心解决方案是 配置国内镜像加速器

1. 检查当前镜像源配置

首先查看 Docker 现有镜像源,确认是否已配置加速器:

docker info | grep -A 5 "Registry Mirrors"

若输出为空或仅显示官方仓库(https://index.docker.io/v1/),则需手动配置国内镜像源。

2. 配置国内镜像加速器

Docker 镜像源配置文件为 /etc/docker/daemon.json(Linux 系统),常用国内镜像源包括阿里云、网易、中科大等,步骤如下:

(1)编辑配置文件
sudo vi /etc/docker/daemon.json

添加以下内容(保留 data-root 可自定义镜像存储路径,可选):

{"data-root": "/data/docker",  // 可选:指定镜像存储路径,默认 /var/lib/docker"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn",  // 中科大镜像源"https://hub-mirror.c.163.com",        // 网易镜像源"https://dockerproxy.com"              // 通用加速器(高可用)]
}
(2)重启 Docker 服务使配置生效

配置修改后需重启 Docker,确保镜像源加载:

# 停止 Docker 服务与关联套接字(避免进程残留)
sudo systemctl stop docker docker.socket
# 重新加载系统服务配置
sudo systemctl daemon-reload
# 启动 Docker 服务
sudo systemctl start docker
(3)验证配置是否生效

再次执行镜像源检查命令,确认加速器已加载:

docker info | grep -A 5 "Registry Mirrors"

若输出以下内容,说明配置成功:

 Registry Mirrors:https://docker.mirrors.ustc.edu.cn/https://hub-mirror.c.163.com/https://dockerproxy.com/

三、实战:拉取 MySQL 镜像并配置端口映射

解决镜像源问题后,开始拉取 MySQL 镜像,并通过 宿主机 3307 端口映射容器 3306 端口(避免与宿主机本地 MySQL 端口冲突)。

1. 拉取 MySQL 镜像(指定固定版本)

不建议使用 latest 标签(默认指向最新版本,可能存在兼容性风险),推荐指定具体版本(如 mysql:8.0):

docker pull mysql:8.0

拉取成功后,查看本地镜像:

docker images | grep mysql

输出示例(显示镜像名称、版本、ID 等信息):

mysql               8.0    3218b38490ce   2 weeks ago   514MB

2. 启动 MySQL 容器(配置端口映射与环境变量)

启动容器时需指定 端口映射-p 宿主机端口:容器端口)、root 密码MYSQL_ROOT_PASSWORD),命令如下:

docker run -d \--name mysql-8.0 \  # 容器名称(自定义,便于管理)-p 3307:3306 \       # 端口映射:宿主机 3307 → 容器 3306-e MYSQL_ROOT_PASSWORD=123456 \  # 设置 MySQL root 用户密码-e TZ=Asia/Shanghai \  # 配置时区(避免时间同步问题)mysql:8.0  # 镜像名称:版本
命令参数说明:
  • -d:后台运行容器(守护态);
  • --name:给容器起一个唯一名称,后续可通过名称操作容器(如停止、重启);
  • -p 3307:3306:端口映射,宿主机 3307 端口接收请求,转发到容器内 3306 端口(MySQL 默认端口);
  • -e:设置环境变量,MYSQL_ROOT_PASSWORD 是 MySQL 必需变量(指定 root 密码),TZ 用于同步时区;
  • mysql:8.0:指定启动所用的镜像。

3. 验证容器运行状态

(1)查看容器是否启动成功
docker ps | grep mysql-8.0

若输出包含容器 ID、状态(Up 表示运行中),说明启动成功:

a1b2c3d4e5f6   mysql:8.0   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-8.0
(2)测试宿主机端口映射是否生效

通过 telnetnc 命令测试宿主机 3307 端口是否可通(需先安装 telnetnc):

# 方法1:使用 telnet
telnet localhost 3307# 方法2:使用 nc(更简洁)
nc -zv localhost 3307

若输出 succeeded!Connected to localhost,说明端口映射正常。

(3)进入容器验证 MySQL 服务

通过 docker exec 命令进入容器内部,登录 MySQL 验证服务:

# 进入容器(交互式终端)
docker exec -it mysql-8.0 /bin/bash# 在容器内登录 MySQL(输入之前设置的密码 123456)
mysql -u root -p

登录成功后,可执行 MySQL 命令(如查看数据库):

show databases;

输出 MySQL 内置数据库(mysqlinformation_schema 等),说明服务正常。
在这里插入图片描述

四、镜像与容器的日常维护操作

成功运行 MySQL 容器后,需掌握基础维护命令,保障服务长期稳定。

1. 镜像维护:清理无用镜像

  • 删除指定镜像(需先停止并删除依赖该镜像的容器):
    docker rmi mysql:8.0  # 删除 mysql:8.0 镜像
    
  • 清理悬空镜像(无标签的镜像,通常是构建镜像残留):
    docker image prune -f  # -f 强制删除,无需确认
    
  • 清理所有未使用镜像(谨慎使用,会删除未运行容器的镜像):
    docker image prune -a -f
    

2. 容器维护:启停、重启与日志查看

  • 停止容器
    docker stop mysql-8.0
    
  • 重启容器
    docker restart mysql-8.0
    
  • 查看容器日志(排查启动失败或运行错误):
    # 实时查看日志
    docker logs -f mysql-8.0# 查看最近 100 行日志
    docker logs --tail 100 mysql-8.0
    
  • 设置容器开机自启(避免宿主机重启后容器未启动):
    docker update --restart=always mysql-8.0
    

五、常见问题排查

  1. 拉取镜像超时:检查镜像源配置是否生效,或更换其他加速器(如 https://dockerproxy.com);
  2. 容器启动失败:通过 docker logs 容器名 查看日志,常见原因是 端口被占用(更换宿主机端口,如 3308:3306)或 密码未设置(确保 MYSQL_ROOT_PASSWORD 变量正确);
  3. 无法连接容器 MySQL:检查宿主机防火墙是否开放 3307 端口(sudo firewall-cmd --add-port=3307/tcp --permanent),或关闭防火墙测试(sudo systemctl stop firewalld)。

若有转载,请标明出处:https://blog.csdn.net/CharlesYuangc/article/details/153109380

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

相关文章:

  • 电视盒子助手开心电视助手 v8.0 删除电视内置软件 电视远程控制ADB去除电视广告
  • 【完整源码+数据集+部署教程】 航拍杂草检测与分类系统源码和数据集:改进yolo11-RVB-EMA
  • My SQL--创建数据库、表
  • mysql高可用架构之MHA部署(三)——故障转移后邮件告警配置(保姆级)
  • 做酒的网站有哪些jsp获取网站域名
  • OpenCV(八):NumPy
  • 小微宝安网站建设有哪些做分析图用的网站
  • RabbitMQ 核心概念解析
  • 开发实战 - ego商城 - 2 nodejs搭建后端环境
  • 基于Java Swing的智能数据结构可视化系统 | 支持自然语言交互的AI算法助手
  • QQmusic sign值逆向实战 - Webpack打包分析
  • 城乡建设部网站首页网站建设公司应该怎么做推广
  • Linux环境下Hive4.0.1(最新版本)部署
  • dolphinscheduler之hivecli 任务
  • spark3访问低版本hive填坑记
  • 池化 (Pooling) 学习笔记
  • LeetCode160.相交链表【最通俗易懂版双指针】
  • Neo4j+Gephi制作社区检测染色图
  • 毕业设计代做网站机械工信部网站备案流程
  • aws ec服务器设置密码登录,ec服务器root登录 aws服务器初始化配置
  • Linux - 命令行参数与环境变量
  • 【高并发服务器】四、通用类型容器any
  • linux学习笔记(29)网络编程——服务器客户端 及多进程多线程服务器
  • 边缘服务器 FTP/TFTP 服务搭建与使用(Docker 方式)
  • VMware安装Kali-Linux
  • (6)数据中心、台式(塔式)服务器、机架式服务器、刀片式服务器
  • 为什么 socket.io 客户端在浏览器能连接服务器但在 Node.js 中报错 transport close
  • Arbess CICD实战(10) - 使用Arbess+GitLab实现PHP项目自动化部署
  • 电子商务网站建设的作用广告视频拍摄制作
  • 深圳集团网站建设企业如何快速推广