0 序

  • 虽然关于 mysql 安装的教程,先前已写过很多期了(参见如下列表),但这期的安装教程所依赖的环境还是大有不同的————基于 docker 环境。
  • docker / k8s 虚拟化/容器技术 的出现,大大提升了安装部署的效率。与环境的解耦,以此成倍数地提升软件交付/软件部署的效率,是它最大的功绩。

  • 另外,一般的,mysql / nginx 等这类组件,在生产环境都是直接用高可用的【云服务】。本章安装教程的实际意义在于,开发者个人使用、或软件应用负载较低的小型软件系统、或开发环境。

  • 好了,进入正题。

  • os : centos 7

这一点,无需关心,因为绝大多数情况下, docker 镜像的使用者可以不太关心外部依赖(包括:操作系统)

  • docker 版本 : 25.0.4

不懂 docker 的同志,请参见:

  • mysql 镜像 : 5.7

2 安装步骤

Step1 安装 docker 环境

可参见本文

  • 安装 docker 镜像
yum -y update

yum remove docker  docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-25.0.3-1.el7
  • 查看 docker 版本
docker version

  • 启动/查看/开机自启动 docker 进程
systemctl start docker
systemctl status docker

# 开机自启动
systemctl enable docker

Step2 安装 mysql 镜像/容器 | 基于 docker

  • 下载镜像
docker pull mysql:5.7
# docker pull mysql:8

  • 查看(下载的)镜像
docker images

  • 创建数据存储目录

此举是为了避免mysql镜像停止运行后数据丢失,做到存算分离

  • /data/mysql/log:/var/log/mysql
  • /data/mysql/data:/var/lib/mysql
  • /data/mysql/conf.d:/etc/mysql/conf.d
  • /data/mysql/my.cnf:/etc/my.cnf
mkdir -p /data/mysql/log
mkdir -p /data/mysql/data
mkdir -p /data/mysql/conf.d
touch /data/mysql/my.cnf

ls /data/mysql
  • 设置 mysql root 用户密码
MYSQL_ROOT_PASSWORD=123456

echo ${MYSQL_ROOT_PASSWORD}
  • 创建、并启动容器
docker run --name mysql \
--restart=always \
-p 3306:3306 \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf.d:/etc/mysql/conf.d \
-v /data/mysql/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
-d mysql:5.7

注:第1个 3306 端口:是指宿主机的映射端口
注:第2个 3306 端口:是指容器的被映射端口

  • 查看容器
docker ps -a

netstat -lntp | grep -i 3306

Step3 测验:在宿主机中执行 mysql 容器 的 命令

  • 方法1
docker exec -it mysql bash
> mysql -uroot -p${MYSQL_ROOT_PASSWORD} --port=3306 -h127.0.0.1 -e 'show databases;'
> exit

注: MYSQL_ROOT_PASSWORD 也是 mysql container 的内置环境变量

  • 方法2:
docker exec -it mysql sh -c "mysql -uroot -p${MYSQL_ROOT_PASSWORD} --port=3306 -h127.0.0.1 -e 'show databases;'"

X 参考文献/推荐文献

  • Docker / Docker Compose
  • mysql 安装教程
  • mysql 使用
  • 其他