CentOS使用Docker搭建常用数据库【Mysql、SQLServer、Oracle、DB2、Postgres】

CentOS系统安装Docker服务

A、在线安装

1、安装相关组件

yum install -y yum-utils device-mapper-persistent-data lvm2

2、docker源安装配置

yum-config-manager  --add-repo   https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test
yum-config-manager --disable docker-ce-nightly

3、安装docker服务

yum -y install docker-ce docker-ce-cli containerd.io

4、验证docker安装是否成功

启动docker服务

systemctl start docker

开机启动docker服务

systemctl enable docker

B、离线安装

说明:当服务器无法联网时,需要进行离线安装docker服务

1、 配置本地yum源

mkdir -p /mnt/cdrom
mount -t iso9660 /opt/CentOS-7-x86_64-Everything-2003.iso /mnt/cdrom

2、 修改fstab文件,服务器重启后自动挂载iso镜像

vim /etc/fstab
#将下面这句话追加至文件最后一行,根据iso文件名和挂载路径修改具体位置
/opt/CentOS-7-x86_64-Everything-2003.iso		/mnt/cdrom		iso9660 defaults        0 0

3、 备份原yum源配置文件

[root@zabbix-server opt]# cd /etc/yum.repos.d/
[root@zabbix-server yum.repos.d]# lsCentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo
[root@zabbix-server yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.bak
[root@zabbix-server yum.repos.d]# vi CentOS-Base.repo

4、 将下面的代码替换至CentOS-Base.repo文件中

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

5、 执行以下命令,重新刷新yum源缓存

[root@zabbix-server yum.repos.d]# yum clean all
[root@zabbix-server yum.repos.d]# yum makecache

6、 安装docker依赖的相关组件

yum install -y yum-utils device-mapper-persistent-data lvm2

7、 编辑docker服务启动文件

[root@zabbix-server yum.repos.d]# vi /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target 

[Service]
Type=notify
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s 

[Install]
WantedBy=multi-user.target

编辑完成后,给该文件添加可执行权限

[root@zabbix-server yum.repos.d]# chmod +x /etc/systemd/system/docker.service

7、下载docker离线安装包

docker离线包下载地址,这里下载docker-ce版本【社区版】即可

8、 下载完成后,将tgz包上传至服务器上,并解压至/usr/bin目录下

tar -zxvf docker-18.03.0-ce.tgz 

mv docker/* /usr/bin

9、 验证docker服务是否安装成功

service docker start
docker info

Docker配置官方镜像加速

镜像加速配置可以参考 配置阿里云加速器的参考教程

Docker搭建Postgres

1、 拉取pg镜像

docker pull postgres:12.5

2、 查看拉取下来的镜像文件

docker image list

3、 创建数据目录

mkdir -p /opt/sdc/docker/postgresql12.5/data

4、 启动postgresql12.5容器

docker run --name postgresql12.5 -e POSTGRES_PASSWORD=postgres -p 48287:5432 -v /opt/sdc/docker/postgresql12.5/data:/var/lib/postgresql/data -d postgres:12.5

说明:
run	创建并运行一个容器
--name postgresql12.5	指定创建的容器的的名字为postgresql12.5
-e POSTGRES_PASSWORD=postgres	设置环境变量,指定数据库的登录口令为postgres
-p 48287:5432	将容器的5432的默认端口映射到外部机器的48287端口
-d postgresql:12.5	指定使用postgresql:12.5作为镜像

5、 远程连接

使用终端命令进入数据库:

docker exec -it postgresql12.5(数据库) psql -U postgres(用户名称) -d postgres(数据库名称)

注意事项:若第3步的命令有误,如我一开始输错了端口(输的48287:48287),导致远程连接不上。解决方法如下:
1、 查看启动了哪些服务:
docker ps -a

2、 关掉postgresql12.5服务:
docker stop postgresql12.5

3、 删掉postgresql12.5服务:
docker rm postgresql12.5

4、 重新run一个新的postresql12.5容器:
docker run --name postgresql12.5 -e POSTGRES_PASSWORD=postgres -p 48287:5432 -v /opt/sdc/docker/postgresql12.5/data:/var/lib/postgresql/data -d postgres:12.5

Docker搭建Oracle 12c

1、拉取Oracle镜像

由于官方镜像需要登录,我们在服务器上需要先进行docker登录

docker login

命令之后输入用户名,密码登录hub.docker.com,如果没有账号,需要在网站上自己申请

接着输入镜像拉取命令

docker pull store/oracle/database-enterprise:12.2.0.1

等待镜像拉取完成

2、镜像拉取完成后,使用命令run一个新的docker

docker run -itd --name oracle12c -p 1521:1521 -p 5500:5500 store/oracle/database-enterprise:12.2.0.1

3、docker运行起来后,可以使用命令查看日志

docker logs oracle12c

4、待untar db完成后,容器内会自动初始化oracle数据库,此过程大概需要5-10分钟

完成后,日志命令查看输入如下:

[root@mec04 /]# docker logs oracle12c
Setup Oracle Database
Oracle Database 12.2.0.1 Setup
Wed Dec 9 09:17:17 UTC 2020

Check parameters ......
log file is : /home/oracle/setup/log/paramChk.log
paramChk.sh is done at 2 sec

untar DB bits ......
log file is : /home/oracle/setup/log/untarDB.log
untarDB.sh is done at 896 sec

config DB ......
log file is : /home/oracle/setup/log/configDB.log
Wed Dec 9 09:32:11 UTC 2020
Start Docker DB configuration
Call configDBora.sh to configure database
Wed Dec 9 09:32:11 UTC 2020
Configure DB as oracle user
Setup Database directories ...

SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 9 09:32:12 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> 
File created.

SQL> ORACLE instance started.

Total System Global Area 1342177280 bytes
Fixed Size		    8792536 bytes
Variable Size		  352323112 bytes
Database Buffers	  973078528 bytes
Redo Buffers		    7983104 bytes
Database mounted.
Database opened.
SQL> 
Database altered.

SQL> 
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 /u01/app/oracle/product/12.2.0
						 /dbhome_1/dbs/spfileORCLCDB.or
						 a
SQL> 
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
encrypt_new_tablespaces 	     string	 CLOUD_ONLY
SQL> 
User altered.

SQL> 
User altered.

SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
update password

Enter password for SYS: 
create pdb : ORCLPDB1

SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 9 09:33:19 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>   2    3    4    5  
Pluggable database created.

SQL> 
Pluggable database altered.

SQL> 
Pluggable database altered.

SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Reset Database parameters

SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 9 09:36:48 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> 
System altered.

SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 09-DEC-2020 09:36:48

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/12.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/12.2.0/dbhome_1/admin/ORCLCDB/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/8a2b2733a5cd/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                09-DEC-2020 09:36:53
Uptime                    0 days 0 hr. 0 min. 4 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/admin/ORCLCDB/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/8a2b2733a5cd/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

DONE!
Remove password info
Docker DB configuration is complete !
configDB.sh is done at 1181 sec

Done ! The database is ready for use .
# ===========================================================================  
# == Add below entries to your tnsnames.ora to access this database server ==  
# ====================== from external host =================================  
ORCLCDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<ip-address>)(PORT=<port>))
    (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLCDB.localdomain)))     
ORCLPDB1=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<ip-address>)(PORT=<port>))
    (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLPDB1.localdomain)))     
#                                                                              
#ip-address : IP address of the host where the container is running.           
#port       : Host Port that is mapped to the port 1521 of the container.      
#                                                                              
# The mapped port can be obtained from running "docker port <container-id>"  
# ===========================================================================  
  Current log# 2 seq# 5 mem# 0: /u04/app/oracle/redo/redo002.log
2020-12-09T09:36:47.224988+00:00
ORCLPDB1(3):Opening pdb with no Resource Manager plan active
Pluggable database ORCLPDB1 opened read write
Completed:     alter pluggable database ORCLPDB1 open
2020-12-09T09:36:48.383073+00:00
    alter pluggable database all save state
Completed:     alter pluggable database all save state
2020-12-09T09:36:48.717931+00:00
ALTER SYSTEM SET encrypt_new_tablespaces='DDL' SCOPE=BOTH;

5、使用Navicat连接Oracle

安装完成后,系统默认的SID名为:ORCLCDB,用户名:sys,密码:Oradoc_db1

在Navicat连接的【常规】选项卡中输入对应的参数

接着选中【高级】选项卡,将【角色】由【Default】改为【SYSDBA】

Docker搭建MySQL

1、 拉取MySQL镜像

docker pull mysql

当不指定镜像版本时,默认拉取latest最新版

docker pull mysql:5.7.32

docker pull mysql:8.0.22

2、 拉取完成后,使用以下命令来run一个新的容器

docker run -itd --name <container-name> -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<mysql_password> <image:tag>

比如:run一个5.7.32版本的容器
docker run -itd --name mysql_5.7.32 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=cdsf@119 mysql:5.7.32


run一个8.0.22版本的容器
docker run -itd --name mysql_8.0.22 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=cdsf@119 mysql:8.0.22

说明:
-p 3306:3306 代表映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过宿主机ip:3306 访问到 MySQL 的服务。如需改端口号需要更改第一个。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

3、 查看是否run成功

docker ps

4、 当需要进入容器查看相关文件或配置时,使用以下命令

docker exec -it <container-name> bash
docker exec -it mysql_5.7.32 bash
docker exec -it mysql_8.0.22 bash

5、 进入容器后,连接mysql查看

mysql -uroot -pcdsf@119

Docker搭建sqlserver

1、 查找Microsoft SQL Server的镜像,并使用命令拉取镜像

docker pull mcr.microsoft.com/mssql/server:2019-latest

2、 拉取完成后,查看镜像

docker images

3、 run一个新的容器

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=1qaz@WSX"  -p 1433:1433 --name sql1  -d mcr.microsoft.com/mssql/server:2019-latest

4、 查看是否运行成功

docker ps -a

5、 进入已启动的容器

docker exec -it sql1 "bash"

6、 进入sqlserver数据库

/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U SA -P "1qaz@WSX"

7、 使用Navicat客户端连接sqlserver

Docker搭建db2

1、拉取db2镜像

docker pull ibmcom/db2:11.5.4.0

2、查看拉取下来的镜像文件

docker image

3、创建数据目录

mkdir -p /opt/sdc/docker/db2_11.5.4.0

4、启动db2容器

docker run -itd --name db2_11.5.4.0 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=Cdsf@119 -e DBNAME=testdb -v /opt/sdc/docker/db2_11.5.4.0:/database ibmcom/db2:11.5.4.0

说明:
--privileged:表示使用主机权限
-e LICENSE=accept参数, 表示接受了使用Db2软件的许可证协议
-e DBNAME=testdb,创建数据库
-v /opt/sdc/docker/db2_11.5.4.0:/database:将容器中的/database目录映射到宿主机的/opt/sdc/docker/db2_11.5.4.0目录
ibmcom/db2:11.5.4.0:tag是11.5.4.0

5、进入容器,修改database目录权限

docker exec -it db2_11.5.4.0 bash
chmod 777 database

6、切换到db2inst1启动数据库实例:

su - db2inst1
db2start

查看运行状态
db2pd -

查看已经创建的数据库
db2 list db directory

7、修改日志路径

db2 update db cfg for testdb using newlogpath /database/logs

8、激活数据库

db2 activate db testdb

查看日志生效

9、进入数据库

db2 connect to testdb

10、使用工具连接db2数据库

遇到的问题:
Navicat连接sqlserver报错:未发现数据源名称并且未指定默认驱动程序

解决方法:找到Navicat安装目录, 双击sqlncli_x64.msi安装运行即可(若是32位的位的机器则双击运行sqlncli.msi即可)

posted @ 2021-06-01 17:42  Hei蛋炒饭  阅读(266)  评论(0编辑  收藏  举报