0 序
- 虽然关于 mysql 安装的教程,先前已写过很多期了(参见如下列表),但这期的安装教程所依赖的环境还是大有不同的------------基于 docker 环境。
-
docker
/k8s
虚拟化/容器技术 的出现,大大提升了安装部署的效率。与环境的解耦,以此成倍数地提升软件交付/软件部署的效率,是它最大的功绩。 -
好了,进入正题。
os
: centos 7这一点,无需关心,因为绝大多数情况下, docker 镜像的使用者可以不太关心外部依赖(包括:操作系统)
docker
版本 : 25.0.3不懂 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.repoyum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-25.0.3-1.el7 -
查看 docker 版本
shell
docker version

- 启动/查看/开机自启动 docker 进程
shell
systemctl start docker
systemctl status docker
# 开机自启动
systemctl enable docker

Step2 安装 mysql 镜像/容器 | 基于 docker
- 下载镜像
shell
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
shell
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 用户密码
shell
MYSQL_ROOT_PASSWORD=123456
echo ${MYSQL_ROOT_PASSWORD}
- 创建、并启动容器
shell
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
端口:是指容器的被映射端口

- 查看容器
shell
docker ps -a
netstat -lntp | grep -i 3306


Step3 测验:在宿主机中执行 mysql 容器 的 命令
- 方法1
shell
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:
shell
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 使用
- 其他