今天在一台云服务器上使用 Docker 部署了 Oracle、MySQL、PostgreSQL、MongoDB、Redis 五种常用的的数据库。覆盖了这些数据库的各种主流的版本,共 19 个实例。
常规情况下,如果要部署这么多数据库,可能至少需要 1 到 2 天时间,使用容器部署压缩到了半个小时之内完成。现在把容器化部署这些数据库的步骤和命令分享出来,参考命令 30 分钟内即可部署完这些数据库。
Docker 环境准备
yum -y install docker
systemctl start 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
部署 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;
部署 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;
部署 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
部署 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 看看效果吧。


容器化部署特别合适想快速熟悉各个数据库环境的同学,或者 DBA 想测试验证某个数据库功能的时候,不用大费周折,快速部署验证测试,用完快速销毁。学习和测试验证没问题,生产环境需要进一步验证。
更多精彩内容欢迎大家关注数元技术公众号~

关于 RadonDB
RadonDB开源社区 是一个面向云原生、容器化的数据库开源社区。为数据库技术爱好者提供围绕主流开源数据库(MySQL、PostgreSQL、Redis、MongoDB、ClickHouse 等)的技术分享平台,并提供企业级 RadonDB 开源产品及服务。
GitHub:
https://github.com/radondb
网站:
https://radondb.com
论坛:
https://kubesphere.com.cn/forum/t/RadonDB
微信群:
请搜索添加群助手微信号 radondb




