Docker实战(九)之数据库应用
目前,主流数据库包括关系型和非关系型两种。
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念金额方法来处理数据库中的数据,支持复杂的事务处理和结构化查询。代表实现有MySQL
、Oracle、PostGreSQL、MariaDB、SQLServer等。
非关系型数据库是新兴的数据库技术,它放弃了传统关系型数据库的部分强一限制,带来性能上的提升,使其更适用于需要大规模并行处理订单场景。非关系型数据库是关系型数据库的补充,代表产品有MongoDB、Redis、CouchDB等。
1.MySQL
使用官方镜像可与快速启动一个MySQL Server实例,如下所示:
docker run --name hi-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:latest
当然,还可以使用--link标签将一个应用容器连接到MySQL容器:
docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
(1)系统与日志访问
docker exec -it some-mysql bash
MySQL日志可以使用docker logs指令查看:
docker logs some-mysql
(2)使用自定义配置文件
如果用户希望使用自定义MySQL配置,则可以创建一个目录,内置cnf配置文件,然后将其挂载至容器的/etc/mysql/conf.d目录。比如,自定义配置文件为/my/custom/config-file.conf,则可以使用以下指令:
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两个配置文件。
(3)脱离cnf文件进行配置
很多配置选项可以通过标签(flags)传递至mysqld进程。这样用户就可以脱离cnf配置文件,对容器进行弹性定制。比如,用户需要改变默认编码方式,将所有表格额的编码改为ut8mb4,则可以使用以下指令:
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
2.MongoDB
MongoDB是一款可扩展,高性能的开源文档数据库,是当今最流行的NoSQL数据库之一。它采用C++开发,支持复杂的数据类型和强大的查询语言,提供了关系数据库的绝大部分功能。由于MongoDB高性能、易部署、易使用等特点,已经在很多领域都很多应用。
(1)使用官方镜像
docker run --name mongo-container -d mongo
docker exec -it 942be12b8418 sh
进入mongodb数据库界面
mongo显示相关版本信息
show dbs显示所有库
db.status()查看数据库状态
通过该命令 docker exec -it 942be12b8418 /bin/bash进入容器
镜像默认暴露mongodb的服务端口:27017,可以通过该端口访问服务。
(1)连接mongodb容器
使用--link参数,连接新建的mongo-container容器
docker run -it --link mongo-container:db alpine sh
进入alpine系统容器后,用户可以通过ping指令测试mongo容器的连通性:
ping db
(2)直接使用mongo cli指令
如果想直接在宿主机器上使用mongodb镜像,可以在docker run指令后面加入entrypoint指令,这样就可以非常方便的直接进入mongo cli了。
docker run -it --link mongo-container:db --entrypoint mongo mongo --host db
3.Redis
Redis是一个开源的基于内存的数据结构存储系统,可以用作数据库、缓存和消息中间件。
使用官方镜像
docker run --name redis-container -d redis
(1)连接redis容器
docker run -it --link redis-container:db alpine sh
官方镜像内也自带了redis客户端,可以使用以下指令直接使用:
docker run -it --link redis-container:db --entrypoint redis-cli redis -h db
(2)使用自定义配置
docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
4.Memcached
Memcached是一个高性能、分布式的开源内存对象缓存系统。最初是Danga Interactive为了优化LiveJournal的访问速度而编写的。目前已经非常广泛的应用于各种Web应用。以BSD licenses授权协议发布。
Memcached守护进程基于C语言实现,基于libevent的事件处理可以实现很高的性能。需要注意的是,由于数据仅存在于内存中,因此重启Memcached或重启操作系统会导致数据全部丢失。
可以直接通过官方提供的memcached镜像运行一个memcached-container容器:
docker run --name memcached-container -d memcached
以下指令会将memcached server的内存使用量设置为64MB。
docker run --name memcached-container-2 -d memcached memcached -m 64
5.CouchDB
CouchDB是一款面向文档的NoSQL数据库,以JSON格式存储数据。它兼容ACID,可以用于存储网站的数据与内容,以及提供缓存等。CouchDB里文档域都是以键值对的形式存储,对数据的每次修改都会得到一个新的文档修订号。
CouchDB侧重于API(可用性和分区容忍度)。相比之下,MongoDB侧重于CP(一致性和分区容忍度),Neo4j则提供了特有的面向图形的结构。
运行官方镜像:
docker run --name couchdb-container couchdb
这个镜像中CouchDB的默认端口是5984,用户可以使用link指令进行容器链接:
docker run --name couchdb-app --link couchdb-container:couch couchdb
6.Cassandra
Cassandra是个开源的分布式数据库,支持分散的数据存储,可以实现容错以及无单点故障等。Cassandra在设计上引入了P2P技术,具备大规模可分区行存储能力,并支持Spark、Storm、Hadoop的集成。目前Facebook、Twitter、Instagram、eBay、Github等多家公司都在使用Cassandra。类似的工具还有Hbase等。
使用官方镜像
docker run --name my-cassandra -d cassandra:latest
这里的--name标签指定容器名称。cassandra:tag的标签指定版本号。标签名称可以参考官方仓库的标签说明:https://hub.docker.com/r/library/cassandra/tags。
Docker实战(九)之数据库应用的更多相关文章
- Docker实战之Redis-Cluster集群
概述 接上一篇Docker实战之MySQL主从复制, 这里是Docker实战系列的第二篇,主要进行Redis-Cluster集群环境的快速搭建.Redis作为基于键值对的NoSQL数据库,具有高性能. ...
- SpringSecurity权限管理系统实战—九、数据权限的配置
目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...
- 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】
阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...
- docker实战练习(一)
systemctl start docker systemctl pause docker systemctl unpause docker systemctl start docker system ...
- 在docker中使用mysql数据库,在局域网访问
1.获取mysql镜像 docker pull mysql:5.6 注意:此处之所以获取mysql5.6是因为mysql5.7在centos7中启动可能会报错 2.查看镜像列表 docker imag ...
- 【原创】Docker实战 Dockerfile最佳实践&&容器之间通信
官方最佳实践文档 https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#from Docker实战(三十) ...
- Docker03 Docker基础知识、Docker实战
1 Docker基础知识 1.1 什么是Docker Docker是一个可以装应用的容器,就像杯子可以装水.书包可以装书一样:docker官网 Docker是Docker公司开发的,并开源到GitHu ...
- [独孤九剑]Oracle知识点梳理(九)数据库常用对象之package
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- React实战之将数据库返回的时间转换为几分钟前、几小时前、几天前的形式。
React实战之将数据库返回的时间转换为几分钟前.几小时前.几天前的形式. 不知道大家的时间格式是什么样子的,我先展示下我这里数据库返回的时间格式 ‘2019-05-05T15:52:19Z’ 是这个 ...
随机推荐
- Django HTML 转义
HTML转义 模板对上下文传递的字符串进行输出时,会对以下字符自动转义 小于号< 转换为< 大于号> 转换为> 单引号' 转换为' 双引号" 转换为 " 与 ...
- Angular 框架介绍
库和框架的区别 jQuery:库 库一般都是封装了一些常用的方法 自己手动去调用这些方法,来完成我们的功能code $('#txt').val('我是小明'); $('div').text('xx') ...
- 镶嵌数据集 Mosaic Dataset 的常见数据组织方式
镶嵌数据集是ESRI公司推出一种用于管理海量影像数据的数据模型,定义在GeoDatabase数据模型中. 它的常见数据组织方式有两种: 1. 源镶嵌数据集 Source Mosaic Dataset ...
- 日历视图(CalendarView)
日历视图(Calendarview) 常用属性: android:selectedWeekBackgroundColor(设置被选中周的背景颜色) android:showWeekNumber(设置是 ...
- Arcengine编辑代码
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using Sys ...
- frame shiro 概述
权限管理 权限管理包括用户身份认证和授权两部分,简称认证授权. 身份认证包括用户口令登陆.指纹验证.刷卡等方式. 授权即访问控制,控制谁能访问哪些资源,主体身份认证后分配权限以访问自己可以访问的资源. ...
- 3org.springframework.beans.factory.BeanDefinitionStoreException异常
1.下面是我遇到的异常信息: 2017-03-25 18:01:11,322 [localhost-startStop-1][org.springframework.web.context.Conte ...
- JVM知识(一):基础原理
学过java知识和技术人,都应该听说过jvm,jvm一直是java知识里面晋级阶段的重要部分,如果想要在java技术领域更深入一步,jvm是必须需要明白的知识点. 本篇来讲解jvm的基础原理,先来熟悉 ...
- Jquery异步 Deferred Object
Deferred Object )); return dtd.promise();};//使用$.when()为普通操作添加回调函数 为多个操作指定回调函数//$.when(deferred, def ...
- PowerShell小技巧 算术表达式求值
前几天要统计一个组虚拟机使用的硬盘容量,只希望得到一个大概的值,计算的值截图如下: 写成算术表达式的话大概是:60 * 3 + 80 * 2 + 90 * 3 + 120 * 6 + 140 * 2 ...