今天在一台云服务器上使用Docker部署了Oracle、MySQL、PostgreSQL、MongoDB、Redis五种常用的的数据库。覆盖了这些数据库的各种主流的版本,共19个实例。常规情况下,如果要部署这么多数据库,可能至少需要1到2天时间,使用容器部署压缩到了半个小时之内完成,现在把容器化部署这些数据库的步骤和命令分享出来,参考命令30分钟内即可部署完这些数据库。特别合适想快速熟悉各个数据库环境的同学,或者DBA想测试验证某个数据库功能的时候,不用大费周折,快速部署验证测试,用完快速销毁。当然仅限于学习和测试验证,不建议在生产环境使用。
Docker环境准备
# yum -y install docker
# systemctl start docker
Docker部署Oracle
创建Oracle11g容器
# docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
# docker run --name docker-oracle11g -p 1621:1521 -d --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
创建后Oracle容器里的root默认密码:helowin,容器Oracle用户密码:oracle,oracle sid: helowin
进入Oracle容器
# docker exec -it docker-oracle11g bash
使用sqlplus登录Oracle数据库
$ sqlplus / as sysdba
Docker部署MySQL
创建容器,以下命令分别创建MySQL5.5、MySQL5.6、MySQL5.7、MySQL8.0四个版本的MySQL数据库实例。
# docker run --name docker-mysql5.5 --publish 3506:3306 -e MYSQL_ROOT_PASSWORD=root -d --restart=always mysql:5.5
# docker run --name docker-mysql5.6 --publish 3607:3306 -e MYSQL_ROOT_PASSWORD=root -d --restart=always mysql:5.6
# docker run --name docker-mysql5.7 --publish 3708:3306 -e MYSQL_ROOT_PASSWORD=root -d --restart=always mysql:5.7
# docker run --name docker-mysql8.0 --publish 3809:3306 -e MYSQL_ROOT_PASSWORD=root -d --restart=always mysql:8.0
进入mysql容器,以docker-mysql5.5容器为例
# docker exec -it docker-mysql5.5 bash
登录MySQL添加用户密码
# mysql -uroot -proot
mysql> grant select,super,process on *.* to 'monitor'@'%' identified by '123456';
mysql> flush privileges;
Docker部署PostgreSQL
创建容器,以下命令分别创建PG10.1、PG11.2、PG12.2三个版本的数据库实例。
docker run --name docker-postgres10.1 -p 5436:5432 -e POSTGRES_PASSWORD=postgres -d --restart=always postgres:10.1
docker run --name docker-postgres11.2 -p 5437:5432 -e POSTGRES_PASSWORD=postgres -d --restart=always postgres:11.2
docker run --name docker-postgres12.2 -p 5438:5432 -e POSTGRES_PASSWORD=postgres -d --restart=always postgres:12.2
进入postgres容器
docker exec -it docker-postgres10.1 bash
登录postgres数据库,创建账号和授权
su - postgres
$ psql
postgres=# create user monitor with password '123456';
postgres=# grant all privileges on database postgres to monitor;
Docker部署Redis
创建容器,以下命令分别创建Redis3.0、Redis4.0、Redis5.0、Redis6.0四个版本的Redis实例,不开启认证。
docker run --name docker-redis3.0-no -p 6369:6379 -d --restart=always redis:3.0 redis-server --appendonly yes
docker run --name docker-redis4.0-no -p 6469:6379 -d --restart=always redis:4.0 redis-server --appendonly yes
docker run --name docker-redis5.0-no -p 6569:6379 -d --restart=always redis:5.0 redis-server --appendonly yes
docker run --name docker-redis6.0-no -p 6669:6379 -d --restart=always redis:6.0 redis-server --appendonly yes
如果Redis需要开启密码认证,可用通过--requirepass参数配置
docker run --name docker-redis3.0 -p 6389:6379 -d --restart=always redis:3.0 redis-server --appendonly yes --requirepass "123456"
docker run --name docker-redis4.0 -p 6489:6379 -d --restart=always redis:4.0 redis-server --appendonly yes --requirepass "123456"
docker run --name docker-redis5.0 -p 6589:6379 -d --restart=always redis:5.0 redis-server --appendonly yes --requirepass "123456"
docker run --name docker-redis6.0 -p 6689:6379 -d --restart=always redis:6.0 redis-server --appendonly yes --requirepass "123456"
进入redis容器
docker exec -it docker-redis3.0 bash
进入容器后就可用登录redis
# redis-cli -a 123456
Docker部署MongoDB
创建容器,以下命令分别创建Mongo3.6、Mongo4.4、Mongo5.0三个版本的Mongo实例。
docker run --name docker-monogb3.6 -p 28017:27017 -d --restart=always mongo:3.6
docker run --name docker-monogb4.4 -p 28018:27017 -d --restart=always mongo:4.4
docker run --name docker-monogb5.0 -p 28019:27017 -d --restart=always mongo:5.0
创建后之后进入mongodb容器
docker exec -it docker-monogb3.6 bash
登录mongo数据库,创建账号
mongo --host=127.0.0.1 --port=27017
> use admin
switched to db admin
> db.createUser({user:'monitor',pwd:'123456',roles:['root']})
Successfully added user: { "user" : "monitor", "roles" : [ "root" ] }
部署完成,使用docker ps看看效果吧,想用哪个用哪个,哇。