[mysql/docker] 基于Docker安装MYSQL

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.repo

    yum 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 使用
  • 其他
相关推荐
千千寰宇14 天前
[MySQL] MySQL数据库中唯一标识符(ID)的梳理总结
database-mysql·大数据/云计算-数据集成/数据开发-cdc/binlog