docker部署mysql与传统方式对比
1、传统方式:
在linux上直接使用yum安装 或者mysql官网下载 tar.gz安装,使用tar.gz可能还要
自己手动解决依赖问题,yum安装虽然解决了依赖问题,但是随着日益增多,其他数据安装,以及开发环境,难免会引起于
其他开发环境的冲突
2、docker容器化部署
docker是基于linux容器技术发展而来,而linux容器技术能做到进程
隔离,从而使得各个服务的部署独立,互不干扰,使用docker部署mysql,还可以部署在同一台服务器上部署不同版本的
mysql,而互不影响,比起传统方式,既不用担心依赖,也不用担心开发环境不同而造成影响
docker化mysql步骤
安装docker
centOS 直接使用yum install docker安装
debian系列:使用 apt-get install docker
拉去dockerhub mysql官方镜像
docker pull mysql:5.7
下载完成后 ,使用docker images 查看当前所有镜像 如下所示:
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 383867b75fd2 7 days ago 373MB
mongo latest cdc6740b66a7 5 weeks ago 361MB
可以看到 TAG 下面标着 5.7, 即mysql的5.7版本
运行mysql5.7镜像
docker run -v ${pwd}/mysql:/var/lib/mysql –name mysql5.7 -d -e MYSQL_ROOT_PASSWORD=root
-p 3306:3306 mysql:5.7
参数解析:
-v ${pwd}/mysql:/var/lib/mysql 把容器里的/var/lib/mysql目录挂载到实体机的当前
执行此docker命令的目录下mysql上,这样容器里的数据库文件就映射到了实体机,即使容器挂掉,mysql
的数据还在-p 3306:3306 把主机的3306 端口映射到容器的3306端口,使得可以再容器外访问mysql
-d 使容器在后太运行
-e 指定mysql容器的运行环境参数, MYSQL_ROOT_PASSWORD 可以设定mysql的root账户的密码
查看运行结果
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ee000f76f8fd mongo:latest "docker-entrypoint.s…" 2 days ago Up About an hour 0.0.0.0:27017->27017/tcp mongoDB
b32313af6fd9 mysql:5.7 "docker-entrypoint.s…" 3 days ago Up About an hour 0.0.0.0:3306->3306/tcp, 33060/tcp mysql5.7
此时,可以看到status显示 运行时间,我的已经运行了一小时,如果失败,status
会显示为 Exited ,说明容器运行失败,原因基本上是 docker run 命令参数不全或者错误导致的,这时,可以使用数据库连接工具
进行连接,也可以进入容器执行sql查看结果,本文以进入容器为例:
执行:docker exec -it ${CONTAINER ID} bash
这里填写自己的mysql容器id,-it表示以交互模式进入容器,容器内部就像是一个精简的linux,可以执行
linux基本命令
root@cyka:/docker-all-conf/mysql5.7/conf.d# docker exec -it mysql5.7 bash
root@b32313af6fd9:/#
可以看到进入容器后@后已经变成容器id,相当于linux的host
这是可以运行 mysql -uroot -p
输入 密码后进入mysql执行sql
root@b32313af6fd9:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| forum-server |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
mysql>
docker部署mysql5.7完成!如果想配置mysql的配置文件,可以把mysql的配置文件目录挂载,这样就可以自己配置了。