目前,主流数据库包括关系型(SQL)和非关系型(NoSQL)两种。
关系型数据库是建立在关系模型基础上的数据库。借助于集合代数等数据概念和方法来处理数据库中的数据,支持复杂的事物和结构化查询。代表实现有MySQL、Oracle、PostGreSQL、MariaDB、SQLServer等。
非关系型数据库是新兴的数据库技术,它放弃了传统关系型数据库的部分强致性限制。带来性能上的提升,使其更适用于需要大规模并行处理的场景。非关系型数据库是关系型数据库的良好补充,代表产品有MongoDB、Redis、CouchDB等。
本章选取了最具代表性的Mysql、Mongodb、Redis、 Memcached、CouchDB、Cassandra等数据库软件,来讲解基于Docker创建相关镜像并进行应用的过程。
12.1 MySQL
MySQL是全球最流行的开源关系数据库软件之一,因为其高性能、成熟可靠和适应性而得到广泛应用。MySQL目前在不少大规模网站和应用中被使用,比如Facebook、Twitter和Yahoo!等。
使用官方镜像可以快速启动一个MySQL Server实例,如下所示:
[root@localhost ~]# docker run -d --name mysqldb -e MYSQL_ROOT_PASSWORD=123 mysql:5.6
以上指令中的hi-mysql是容器名称,123为数据库的root密码。
使用docker ps 指令可以看到现在运行中的容器:
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0c4bbf1b5491 mysql:5.6 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp mysqldb
当然,还可以使用--link标签将一个应用容器连接至MySQL容器:
[root@localhost ~]# docker run -d -P --name wordpress --link mysqldb wordpress
[root@localhost ~]# docker run -d -P --name wordpress --link mysqldb wordpress
1.系统与日志访问
用户可以使用docker exec 指令调用内部系统中的bash shell,以访问容器内部系统:
[root@localhost ~]# docker exec -it 0c4 /bin/bash
MySQL日志可以使用docker logs指令查看:
[root@localhost ~]# docker logs 0c4
12.2 MongoDB
12.3 Redis
12.4 Memcached
12.5 CouchDB
12.6 Cassandra
12.7 本章小结
在使用数据库容器时,建议将数据库文件映射到宿主主机,一方面减少容器文件系统带来的性能损耗,另一方面实现数据的持久化。
阅读本章需要对特定的数据库的特性和配置有一定的基础知识,建议读者结合各个灵气库的使用文档进行更深入的学习。