
Docker安装Oracle19C
Docker安装Oracle19C
# 如果使用-v 映射到本地文件,为了确保Docker容器内运行的Oracle数据库进程可以有权限读写数据到映射的目录。 执行: chmod -R 777 你需要映射的文件夹
mkdir -p /data/oracle/oradata
chmod -R 777 /data/oracle/oradata
# 启动命令
docker run -d \
--name oracle19c \
-p 1521:1521 \
-p 5500:5500 \
-e TZ=Asia/Shanghai \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb \
-e ENABLE_ARCHIVELOG=false \
-e ORACLE_PWD=Ora20240419 \
-e ORACLE_BASE=/opt/oracle \
-e ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \
-v /data/oracle/oradata/:/opt/oracle/oradata \
registry.cn-guangzhou.aliyuncs.com/hjdyzy/oracle:19.3.0-ee
# 查看启动日志
docker logs oracle19c --follow
创建实例的过程也会比较长
注意日志信息,有错解决错即可。通常保证内存和磁盘空间够即可出现如下消息表示安装完成
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORCLPDB(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2024-04-19T13:34:46.444537+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCL/control01.ctl' SCOPE=SPFILE;
2024-04-19T13:34:46.453712+00:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE
Completed: ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE
XDB initialized.
2024-04-19T13:44:30.384776+00:00
2024-04-19T14:04:30.590662+00:00leted for file# 10, old size 327680K, new size 337920K
Resize operation completed for file# 3, old size 522240K, new size 532480K
安装完成,连接测试
默认用户名为system
密码是创建容器时设置的密码,这里密码为Ora20240419
======================== 分隔符 ==========================
Docker配置Oracle19C镜像
一、搭建Docker
CentOS Docker 安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
Ubuntu/Debian Docker 安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
二、下载官方docker-images仓库源码
地址如下:下载地址
访问不了Github
可以从我的网盘下载,地址如下:
docker-image源码链接:https://pan.baidu.com/s/1dFi1mqKmiV4FCEgeJtbM9w
提取码:5429
三、将代码上传到服务器
[root@ecs-1 docker-images-main]# pwd
/opt/oracle/docker-images-main
建议服务器磁盘至少30G,空闲内存4G以上
四、官网下载Oracle19C安装包
地址如下:下载地址
这里会涉及到登录Oracle
,如果没有账号可以从我的网盘下载,地址如下:
Linux x86-64 Oracle19C安装包链接:https://pan.baidu.com/s/1KUa4qMEyJYgjTTT6V6dqeQ
提取码:3262Linux ARM Oracle19C安装包链接:https://pan.baidu.com/s/14wPMOGltxlcGBQmF2ERaDA
提取码:3262
五、将下载好的安装包移动至如下位置
(具体位置视自己项目为准)
[root@ecs-1 19.3.0]# pwd
/opt/oracle/docker-images-main/OracleDatabase/SingleInstance/dockerfiles/19.3.0
将Oracle19C
安装文件上传到该目录
如图所示
六、构建镜像
# 请确保磁盘空间足够
[root@ecs-1 dockerfiles]# ./buildContainerImage.sh -v 19.3.0 -e
这个过程会比较长,预计10分钟左右;出现如图消息,安装即为完成
查看镜像
[root@ecs-1 dockerfiles]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 19.3.0-ee ef8fb2fbe1e2 14 minutes ago 6.54GB
七、在Docker上运行Oracle19C
# 如果使用-v 映射到本地文件,为了确保Docker容器内运行的Oracle数据库进程可以有权限读写数据到映射的目录。 执行: chmod -R 777 你需要映射的文件夹
mkdir -p /data/oracle/oradata
chmod -R 777 /data/oracle/oradata
# 启动命令
docker run -d \
--name oracle19c \
-p 1521:1521 \
-p 5500:5500 \
-e TZ=Asia/Shanghai \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb \
-e ENABLE_ARCHIVELOG=false \
-e ORACLE_PWD=Ora20240419 \
-e ORACLE_BASE=/opt/oracle \
-e ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 \
-v /data/oracle/oradata/:/opt/oracle/oradata \
ef8fb2fbe1e2
# 查看启动日志
docker logs oracle19c --follow
创建实例的过程也会比较长
注意日志信息,有错解决错即可。通常保证内存和磁盘空间够即可出现如下消息表示安装完成
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORCLPDB(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2024-04-19T13:34:46.444537+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCL/control01.ctl' SCOPE=SPFILE;
2024-04-19T13:34:46.453712+00:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE
Completed: ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE
XDB initialized.
2024-04-19T13:44:30.384776+00:00
2024-04-19T14:04:30.590662+00:00leted for file# 10, old size 327680K, new size 337920K
Resize operation completed for file# 3, old size 522240K, new size 532480K
八、连接测试
默认用户名为system
密码是创建容器时设置的密码,这里密码为Ora20240419
九、上传镜像到镜像仓库
示例:推送到阿里云Docker Registry
1. 登录阿里云Docker Registry
docker login --username=阿里云账号全名 registry.cn-guangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
docker pull registry.cn-guangzhou.aliyuncs.com/hjdyzy/oracle:19.3.0-ee
3. 将镜像推送到Registry
docker login --username=阿里云账号全名 registry.cn-guangzhou.aliyuncs.com
docker tag ef8fb2fbe1e2 registry.cn-guangzhou.aliyuncs.com/hjdyzy/oracle:19.3.0-ee
docker push registry.cn-guangzhou.aliyuncs.com/hjdyzy/oracle:19.3.0-ee
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-guangzhou.aliyuncs.com
作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 19.3.0-ee ef8fb2fbe1e2 2 hours ago 6.54GB
$ docker tag ef8fb2fbe1e2 registry-vpc.cn-guangzhou.aliyuncs.com/hjdyzy/oracle:19.3.0-ee
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-guangzhou.aliyuncs.com/hjdyzy/oracle:19.3.0-ee
十、多架构镜像
示例:推送到Docker Hub
1. 启用Docker CLI的实验特性
确保Docker CLI的实验特性被启用:
export DOCKER_CLI_EXPERIMENTAL=enabled
2.准备x86-64和Arm架构镜像
按照上述步骤在Arm架构服务器再执行一遍构建Oracle镜像步骤,再下载x86-64架构的镜像,得到如下:
$ docker login
$ docker tag ef8fb2fbe1e2 hjdyzy/oracle:19.3.0-ee
$ docker tag b2bc6ba0dd80 hjdyzy/oracle:19.3.0-ee-arm
$
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hjdyzy/oracle 19.3.0-ee-arm b2bc6ba0dd80 2 hours ago 5.52GB
hjdyzy/oracle 19.3.0-ee ef8fb2fbe1e2 4 hours ago 6.54GB
3.创建并推送Manifest列表
使用 docker manifest create
命令来创建一个新的manifest列表,该列表包含多个架构特定的镜像。
docker manifest create hjdyzy/oracle:19.3.0-ee \
--amend hjdyzy/oracle:19.3.0-ee-arm \
--amend hjdyzy/oracle:19.3.0-ee
这里,hjdyzy/oracle:19.3.0-ee
是manifest列表的名称,它“指向”两个已经存在的镜像:hjdyzy/oracle:19.3.0-ee-arm
和 hjdyzy/oracle:19.3.0-ee
。
接下来,为manifest列表中的每个镜像设置特定的架构信息:
docker manifest annotate hjdyzy/oracle:19.3.0-ee hjdyzy/oracle:19.3.0-ee-arm --os linux --arch arm64
docker manifest annotate hjdyzy/oracle:19.3.0-ee hjdyzy/oracle:19.3.0-ee --os linux --arch amd64
这里,我们使用 docker manifest annotate
命令为每个镜像指定操作系统和架构。
最后,推送你创建的manifest列表到Docker Hub:
docker manifest push hjdyzy/oracle:19.3.0-ee
4.验证
你可以使用下面的命令来验证新的manifest列表是否正确推送并包含了所有相关架构的镜像:
docker manifest inspect hjdyzy/oracle:19.3.0-ee
这将显示manifest列表的详细信息,包括所有关联的镜像及其架构。
通过这种方式,当用户执行 docker pull hjdyzy/oracle:19.3.0-ee
时,Docker将会根据用户的平台自动选择合适的镜像版本进行拉取,无论是ARM还是x86架构。这使得镜像的分发和使用变得更加灵活和便捷。
- 感谢你赐予我前进的力量