网站优化培训好学吗,蓝色风格企业网站模板,美的网站建设水平swot分析,优化网站作用目录 1、前言
2、部署MySQL
2.1、Docker仓库查看镜像
2.2、拉取MySQL镜像
2.3、创建持久化目录
2.4、启动MySQL容器
2.5、查看宿主机上的MySQL目录
2.6、本地MySQL测试
2.7、新建MySQL用户#xff0c;配置远程访问
2.8、本地Navicat连接测试
3、为什么数据库不适合D…目录 1、前言
2、部署MySQL
2.1、Docker仓库查看镜像
2.2、拉取MySQL镜像
2.3、创建持久化目录
2.4、启动MySQL容器
2.5、查看宿主机上的MySQL目录
2.6、本地MySQL测试
2.7、新建MySQL用户配置远程访问
2.8、本地Navicat连接测试
3、为什么数据库不适合Docker容器化
3.1、数据安全性
3.2、硬件资源争用
3.3、网络带宽占用
3.4、数据额外隔离
4、小结 1、前言
开发中通常会自建MySQL数据库方便个人开发测试。这里利用Docker安装MySQL 5.7。
2、部署MySQL
2.1、Docker仓库查看镜像
上镜像仓库https://hub.docker.com/ 搜索mysql。 搜索结果第一条就是我们要的结果。 点击进去查看详情可以看到关于MySQL镜像相关的所有信息。我们需要安装的是MySQL5.7版本因此我们进入到Tags中。 找到我们要的5.7版本。 后面的黑框里的命令就是我们可以拉取该版本的命令。
2.2、拉取MySQL镜像
从Docker Hub中复制拉取镜像命令执行。
docker pull mysql:5.7 2.3、创建持久化目录
MySQL数据库部署时一定要考虑数据持久化的问题。如果没有挂在持久化数据卷一旦MySQL容器被销毁则数据将会全部丢失。
# 用于存放mysql配置文件
mkdir -p mysql/conf
# 用于存放mysql数据
mkdir -p mysql/data2.4、启动MySQL容器
docker run -d -p 33066:3306 \-v /home/pengyaohuang/mysql/conf:/etc/mysql/conf.d \-v /home/pengyaohuang/mysql/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORDroot \--name mysql mysql:5.7-v将MySQL的配置文件和数据文件挂在到宿主机上。
2.5、查看宿主机上的MySQL目录
tree -d -L 3 /home/pengyaohuang/mysql/ 2.6、本地MySQL测试
先进入docker容器内
docker exec -it mysql /bin/bash
再通过命令进入MySQL
mysql -uroot -p 2.7、新建MySQL用户配置远程访问
创建一个admin_rw账户
# 创建用户
mysql create user admin_rw% identified by 123456;
# 赋予所有权限
mysql grant all privileges on *.* to admin_rw%;
# 刷新权限
mysql flush privileges;2.8、本地Navicat连接测试
由于我映射到宿主机端口为33066因此我的MySQL连接信息为192.168.74.128:33066 连接成功 3、为什么数据库不适合Docker容器化
虽然我们按照前面步骤能够正常安装并使用我们的MySQL。但是实际项目中我们MySQL很少会使用Docker安装要么直接装在宿主机要么使用云服务RDS。这是因为DOcker容器提供的是无状态的服务所以不适合将有状态的服务如数据库部署到Docker容器中。原因有4
3.1、数据安全性
尽管 Docker 可以通过数据卷的方式将容器中的数据持久化到宿主机上但仍不能保证不丢失数据。如果容器崩溃了且数据库未被正确关闭则可能会丢失数据。
3.2、硬件资源争用
通常在一台 Docker 的宿主机上会启动多个容器如果将数据库的容器与其他应用的容器部署在同一个宿主机上由于它们对硬件资源的要求是不同的则必然会造成资源争用的问题。
3.3、网络带宽占用
Docker 的网络都是虚拟网络通过宿主机上的 docker0 网桥进行转发。而数据库通常对网络带宽的要求是比较高的。因此将数据库的容器与其他应用的容器部署在同一个宿主机上则网络带宽必然会成为数据库性能的瓶颈。
3.4、数据额外隔离
将数据库部署到容器中毫无疑问会增加对容器的隔离不利于数据库的水平扩展。
4、小结
使用 Docker 是为了更容易地构建新环境和重新部署应用。而在实际情况中数据库一旦部署完成则很少会对数据库进行升级或重新部署。因此从这个角度来看数据库也不适合 Docker 容器化。