作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!
1. 数据库概念
目前,主流数据库包括关系型(SQL)和非关系型(NoSQL)两种。 |
关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据,支持复杂的事物处理和结构化查询。代表实现有MySQL、Oracle、PostGreSQL、MariaDB、 SQLServer等。 |
非关系数据库是新兴的数据库技术,它放弃了传统关系型数据库的部分强一致性限制,带来性能上的提升,使其更适用于需要大规模并行处理的场景。非关系型数据库是关系型数据库的良好补充,代表产品有MongoDB、Redis、CouchDB等。 |
本篇文章选取了最具代表性的Mysql来讲解基于Docker创建相关镜像并进行应用的过程。 |
2. 认识MySQL
MySQL是全球最流行的开源的开源关系数据库软件之一,因为其高性能、成熟可靠和适应性而得到广泛应用。MySQL目前在不少大规模网站和应用中被使用,比如 Facebook、Twitter和Yahoo!等。 |
MySQL数据库是一种关系型数据库管理系统,是一种开源软件由瑞典MySQL AB公司开发,08年1月16日被Sun公司收购,09年Sun公司又被Oracle公司收购。 由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 MySQL属于轻量级数据库,也就是小中型数据库 |
MySQL数据库优点: 1,成本:MySQL是免费的,并且它的技术支持也很便宜; 2,速度:MySQL胜过它的大多数竟争对手功能; 3,MySQL提供了开发人员所需要的大多数功能; 4,可移植:MySQL可以在绝大多数的操作系统中运行,易于使用和管理。 |
3. 在Docker中运行MySQL
使用官方镜像可以快速启动一个MySQL Server实例,如下所示: |
$ docker run --name hi-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:latest e6cb906570549812c798b7b3ce46d669a8a4e8ac62a3f3c8997e4c53d16301b6
以上指令中的hi-mysql是容器名称,123为数据库的root密码。 使用docker ps指令可以看到现在运行中的容器: |
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e6cb90657054 mysql "docker-entrypoint.sh" 4 minutes ago Up 3 minutes 3306/tcp hi-mysql
当然,还可以使用--link标签将一个应用容器连接至MySQL容器: |
$ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
MySQL服务的标准端口是3306,用户可以通过CLI工具对配置进行修改: |
$ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_ PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ ROOT_PASSWORD"'
官方MySQL镜像还可以作为客户端,连接非Docker或者远程的MySQL实例: |
$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p
4. 系统与日志访问
用户可以使用docker exec指令调用内部系统中的bash shell,以访问容器内部系统: |
$ docker exec -it some-mysql bash
MySQL Server日志可以使用docker logs指令查看: |
$ docker logs some-mysql
5. 使用自定义配置文件
如果用户希望使用自定义MySQL配置,则可以创建一个目录,内置cnf配置文件,然后将其挂载至容器的/etc/mysql/conf.d目录。比如,自定义配置文件 为/my/custom/config-file.cnf,则可以使用以下指令: |
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_ PASSWORD=my-secret-pw -d mysql:tag
这是新的容器some-mysql启动后,就会结合使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf两个配置文件。 |
6. 脱离cnf文件进行配置
很多的配置选项可以通过标签(flags)传递至mysqld进程。这样用户就可以脱离cnf配置文件,对容器进行弹性的定制。比如,用户需要改变默认编码方式,将所有表格的编码方式修改为uft8mb4,则可以使用以下指令: |
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果需要查看可用选项的完整列表,可以执行: |
$ docker run -it --rm mysql:tag --verbose --help
👑👑👑结束语👑👑👑