[mysql/docker] 基于Docker安装MYSQL
0 序
- 虽然关于 mysql 安装的教程,先前已写过很多期了(参见如下列表),但这期的安装教程所依赖的环境还是大有不同的————基于 docker 环境。
-
docker
/k8s
虚拟化/容器技术 的出现,大大提升了安装部署的效率。与环境的解耦,以此成倍数地提升软件交付/软件部署的效率,是它最大的功绩。 -
另外,一般的,mysql / nginx 等这类组件,在生产环境都是直接用高可用的【云服务】。本章安装教程的实际意义在于,开发者个人使用、或软件应用负载较低的小型软件系统、或开发环境。
-
好了,进入正题。
os
: centos 7这一点,无需关心,因为绝大多数情况下, docker 镜像的使用者可以不太关心外部依赖(包括:操作系统)
docker
版本 : 25.0.4不懂 docker 的同志,请参见:
mysql
镜像 : 5.7
1 安装步骤
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
echo "" > /data/mysql/my.cnf
ls -la /data/mysql
- 设置 mysql root 用户密码的环境变量
echo "export MYSQL_ROOT_PASSWORD=123456" >> /etc/profile
source /etc/profile
echo ${MYSQL_ROOT_PASSWORD}
注:
export
命令用于设置或显示环境变量
- 创建、并启动容器
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
查看容器的运行日志
docker logs mysql
查看容器的网络、端口等情况
docker inspect mysql
docker port mysql
Step3 测验:在宿主机中执行 mysql 容器 的 命令
- 方法1
docker exec -it mysql bash
> mysql -uroot -p${MYSQL_ROOT_PASSWORD} --port=3306 -h127.0.0.1 -e 'show databases;'
> exit
cat /etc/system-release
注:
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;'"
2 卸载步骤
- 删除 mysql 容器
docker rm -f mysql
- 查验容器是否存在、存活
docker ps -a
- 查看数据目录
ls -la /data/mysql/
- 删除数据目录 【可选步骤,高危操作】
rm -rf /data/mysql
ls -la /data/mysql
ls -la /data/
X 参考文献/推荐文献
- Docker / Docker Compose
- mysql 安装教程
- [数据库] MySQL之数据库备份与升级:MySQL Percona(RPM) 5.7.24-27 升级到 5.7.31-34 - 博客园/千千寰宇
- [数据库] Windows:安装MySQL[解压版的安装/卸载] - 博客园/千千寰宇
- [数据库] Ubuntu Linux之搭建远程数据库MySQL(全过程) - 博客园/千千寰宇
- https://hub-stage.docker.com/
- mysql 使用
- 其他
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!