网站首页 > 基础教程 正文
以下是通过Docker安装本地MySQL包的步骤,分为使用官方镜像和自定义镜像两种方案:
方案一:使用Docker官方MySQL镜像(推荐)
步骤:
- 拉取官方MySQL镜像
bash
docker pull mysql:8.0 # 指定版本,如8.0
- 运行MySQL容器
bash
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-p 3306:3306 \
-v /宿主机/数据目录:/var/lib/mysql \
mysql:8.0
O 参数说明:
- -d: 后台运行
- --name: 容器名称
- -e MYSQL_ROOT_PASSWORD: 设置root密码
- -p 3306:3306: 映射宿主机端口到容器
- -v: 挂载数据卷持久化数据
方案二:使用本地MySQL包构建自定义镜像
适用场景: 需要特定定制或使用非标准MySQL包。
步骤:
- 准备文件
O 创建项目目录并进入:
bash
mkdir mysql-docker && cd mysql-docker
O 将本地MySQL包(如 .deb、.rpm 或二进制包)放入目录。
- 编写Dockerfile
dockerfile
复制
# 使用基础镜像(如Ubuntu)
FROM ubuntu:20.04
# 复制本地MySQL包到镜像
COPY mysql-package.deb /tmp/mysql.deb
# 安装依赖和MySQL
RUN apt-get update && \
apt-get install -y ./tmp/mysql.deb && \
rm -rf /var/lib/apt/lists/*
# 配置MySQL
RUN mkdir -p /var/lib/mysql && \
chown -R mysql:mysql /var/lib/mysql
# 暴露端口
EXPOSE 3306
# 设置环境变量
ENV MYSQL_ROOT_PASSWORD=my-secret-pw
# 启动命令
CMD ["mysqld_safe"]
- 构建镜像
bash
docker build -t custom-mysql .
- 运行容器
bash
docker run -d \
--name custom-mysql \
-p 3306:3306 \
-v /宿主机/数据目录:/var/lib/mysql \
custom-mysql
验证安装
- 进入容器
bash
docker exec -it mysql-container mysql -uroot -p
- 输入密码后执行SQL:
sql
SHOW DATABASES;
常见问题处理
- 字符集配置
在my.cnf中添加:
ini
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
- 权限问题
确保挂载目录权限正确:
bash
chmod -R 755 /宿主机/数据目录
- 查看日志
bash
docker logs mysql-container
总结
- 推荐直接使用官方镜像,省去配置繁琐步骤。
- 自定义镜像适合需要深度定制的场景,但需注意依赖和配置文件的正确性。
- 数据持久化务必通过-v挂载卷,避免容器删除后数据丢失。
猜你喜欢
- 2025-05-15 Filebeat es 同步服务器日志到es
- 2025-05-15 docker容器的使用以及部署mysql
- 2025-05-15 一、docker部署ollama同时分别运行gemma3:27b bge-m3 deepseek-r1
- 2025-05-15 聊聊部署在docker容器里面的springboot项目如何启用arthas
- 2025-05-15 Docker容器化部署Java应用的最佳实践
- 2025-05-15 「linux」如何使用docker部署c/c++程序
- 2025-05-15 Docker安装MySQL 8、Redis并确保数据持久化的详细步骤
- 2025-05-15 Flask Docker Demo 项目指南
- 2025-05-15 彻底搞懂容器启动、停止、调试的每一个细节!
- 2025-05-15 Mac安装Docker及使用
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)