某台 Linux 服务器需要安装Oracle,但安装过程十分繁琐复杂,且一旦错误,将无法卸载干净,所以使用 Docker拉取 Oracle 镜像后安装。

安装Docker:

  1. docker 要求内核版本高于3.10,查看
1
uname -r
  1. 使用root权限更新yum包
1
sudo yum update
  1. 安装docker
1
yum -y install docker-io
  1. 将docker设为开机自启动
1
2
sudo systemctl start docker;
sudo systemctl enable docker;
  1. 测试docker是否启动完成并查看版本
1
docker version

安装Oracle12C

  1. 拉取 Oracle 镜像 sath89/oracle-12c
1
docker pull sath89/oracle-12c1

拉取Oracle镜像

  • 下载下来5G左右

  • 查看下载的镜像

1
docker images

查看下载的镜像

==注意:如果网慢,则多等等,还会出现一种情况,下载完2.7G的文件后,突然开始另一个文件的下载,然后卡住不动,这时直接Ctrl+C退出重新执行镜像拉取命令==

  1. 安装 Oracle
1
docker run --restart always -d -p 8080:8080 -p 1521:1521 -v /usr/local/oracledata:/u01/app/oracle --name orac sath89/oracle-12c1

会返回一串 ID 如 33c476a985358e42d2f18af5f3a0c2271325554fc7041a35b677892df1990824

然后执行命令查看安装进度

1
docker logs -f 33c476a985358e42d2f18af5f3a0c2271325554fc7041a35b677892df1990824

img

这样安装完成则Ctrl+C退出,安装完成~

执行

1
2
3
4
5
6
# 获取运行的容器
docker ps
# 运行id为7485d22f2fd5容器
docker exec -it 7485d22f2fd5 /bin/bash
# 使用sqlplus进入Oracle,使用SQL命令行,默认为system/oracle
sqlplus system/oracle@//localhost:1521/xe1

img

成功。使用pl/sql连接时配置tnsname,xe是这个镜像默认的服务。

安装命令解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run --restart always -d -p 8080:8080 -p 1521:1521 -v /usr/local/oracledata:/u01/app/oracle --name orac sath89/oracle-12c

1:docker run sath89/oracle-12c
docker运行一个名为sath89/oracle-12c的镜像,如果该镜像不存在于本地,则从docker远程仓库拉取

2:--restart always
docker容器默认为不自启,如断电等情况,会导致服务无法使用

3:-p 1521:1521
就像MySQL使用3306端口连接一样,1521是Oracle的端口,将端口进行映射。

4:-v /usr/local/oracledata:/u01/app/oracle
在docker使用数据库应注意的问题就是数据持久化,这个命令是将docker容器中安装的Oracle数据目录挂载到其他文件目录下,/u01/app/oracle是容器内oracle存放数据的位置,/usr/local/oracledata是容器挂载的其他目录,在Oracle数据库操作后文件会同步到该文件夹

5:--name orac
为该容器定义名称,否则将使用默认name1

总结:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# docker默认安装目录为

/var/lib/docker

# 列出包含已停止的容器

docker ps -a

# 启动停止的容器

docker start ba4a9b5ed8f6

# 已创建的容器修改启动策略(自动重启等)
docker update --restart always orac

# 停止

docker stop orac

# 删除容器

docker rm ba4a9b5ed8f6

# 删除容器(同时删除数据)

docker rm -v ba4a9b5ed8f6

# 运行容器到容器命令行界面

docker exec -it 7485d22f2fd5 /bin/bash

# 查找文件

find / -name tnsnames.ora

注意:

在虚拟机上测试时最初安装出现错误(使用logs跟踪后定位到日志文件可查看)

Specified value of sga_target 292M is too small, needs to be at least 364M
查看虚拟机设置的内存为1G,修改为2G后,Oracle安装成功

原文地址:原文