几年前把由于项目经常用到oracle,而且单机使用,频繁安装,后来下定决心把oracle封装为docker镜像,提高效率。放在阿里云镜像市场,下载人数也很多,确实很有意思!
下载镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
查看镜像
docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 3 years ago 6.85 GB
启动镜像
docker run -d --name oracle -p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
可进入容器查看
docker exec -it 3fa112fd3642 /bin/bash [oracle@bd1796de8599 /]$ source /home/oracle/.bash_profile [oracle@bd1796de8599 /]$ sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on Fri Apr 26 17:05:41 2019 Copyright (c) 1982, 2009, Oracle. All rights reserved. SQL> connect /as sysdba Connected.
到这里我们就可以正常使用oracle,但是因为oracle的数据是保存再容器内,如果容器损坏或者被删除则数据就会丢失,所以
我们需要把数据从容器内映射到宿主机上,这样可以保证数据的安全也更方便管理!
宿主机创建文件
mkdir -p /opt/oracle/ mkdir -p /opt/oracle/flash_recovery_area/
将容器内的文件拷贝到宿主机,方便文件映射(3fa112fd3642为容器ID)
docker cp 3fa112fd3642:/home/oracle/app/oracle/oradata /opt/oracle/oradata docker cp 3fa112fd3642:/home/oracle/app/oracle/flash_recovery_area/helowin /opt/oracle/flash_recovery_area/helowin chmod -R 777 /opt/oracle/
然后就可以启动了
先停止和删除容器
docker stop 3fa112fd3642 docker rm 3fa112fd3642
然后启动docker容器(映射数据文件)
可以写个小脚本oracle.sh 内容如下:
docker run -d --name oracle -p 1521:1521 --privileged=true -v /opt/oracle/oradata:/home/oracle/app/oracle/oradata -v /opt/oracle/flash_recovery_area/helowin:/home/oracle/app/oracle/flash_recovery_area/helowin registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
然后执行 sh oracle.sh
到这里oracle就启动完成,并且数据文件也已经映射。
推荐用docker-compose进行管理
安装docker-compose参考:https://mhsj.net/59.html
编辑docker-compose文件(oracle.yml)
注意格式
oracle: image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g environment: - TZ=Asia/Shanghai volumes: - /opt/oracle/oradata/:/home/oracle/app/oracle/oradata/ - /opt/oracle/flash_recovery_area/helowin/:/home/oracle/app/oracle/flash_recovery_area/helowin/ ports: - "1521:1521" restart: always
启动服务
docker-compose -f oracle.yml up -d
docker重启后容器会自动启动
其他方式
registry.cn-hangzhou.aliyuncs.com/jydsun/oracle11g_ssg:1.04
cat docker-compose.yml
oracle:
image: registry.cn-hangzhou.aliyuncs.com/jydsun/oracle11g_ssg:1.04
environment:
- TZ=Asia/Shanghai
volumes:
- /home/oracle/app/oradata/:/opt/oracle/app/oradata/
- /home/oracle/app/flash_recovery_area/:/opt/oracle/app/flash_recovery_area/
- /home/oracle/app/dpdump/:/opt/oracle/dpdump/
ports:
- "1521:1521"
restart: always
转载请注明:梦绘设计 » docker技术 » docker容器方式部署oracle11g
版权声明
本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。