在docker环境中启动mysql,核心是通过镜像运行容器时传入正确的启动命令与参数,使数据库按预期配置运行。常见做法包括直接使用docker run命令,或借助编排文件管理启动选项。

使用docker run启动mysql容器
最基础的方式是通过docker run命令拉起官方mysql镜像,并通过环境变量设置root密码、数据库名等。示例如下:
# 启动一个mysql 8.0容器,映射端口并设置root密码 docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=mysecret -e MYSQL_DATABASE=appdb -p 3306:3306 -v /data/mysql:/var/lib/mysql mysql:8.0
上述命令中,-e用来配置mysql启动时的环境变量,相当于给容器内的mysqld传入初始化参数;-v将宿主机目录挂载为数据卷,避免容器删除后数据丢失。
通过配置文件自定义mysql启动命令
如果需要修改mysql的默认行为,比如调整最大连接数,可准备一个my.cnf文件,在容器启动时挂载到/etc/mysql/conf.d目录,mysql进程会自动读取。
# 本地配置文件 my.cnf 内容 [mysqld] max_connections=200 character-set-server=utf8mb4
# 挂载配置启动容器 docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=mysecret -p 3306:3306 -v /data/mysql:/var/lib/mysql -v $(pwd)/my.cnf:/etc/mysql/conf.d/my.cnf mysql:8.0
使用docker-compose管理启动
对于多服务场景,可以用docker-compose.yml统一描述mysql启动命令与相关依赖:
version: '3'
services:
mysql:
image: mysql:8.0
container_name: my-mysql
environment:
MYSQL_ROOT_PASSWORD: mysecret
MYSQL_DATABASE: appdb
ports:
- "3306:3306"
volumes:
- /data/mysql:/var/lib/mysql
- ./my.cnf:/etc/mysql/conf.d/my.cnf
执行docker-compose up -d即可按定义启动容器。这种方式把mysql启动命令配置固化在文件中,便于团队复用。
常见注意事项
- 宿主机3306端口被占用时,需修改-p参数中的宿主机端口。
- 数据卷目录权限不足会导致mysql启动失败,确保挂载路径可写。
- 若需执行自定义初始化sql,可挂载到/docker-entrypoint-initdb.d目录。
mysql容器启动后可用 docker logs my-mysql 查看实际mysqld启动日志,排查配置错误。