docker能安裝oracle。安裝方法:1、拉取Oracle官方鏡像,可以利用“docker images”查看鏡像;2、啟動容器后利用“docker exec -it oracle11g bash”進入容器,并且編輯環(huán)境變量;3、利用“sqlplus /nolog”進入oracle命令行即可。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker19.03版、Dell G3電腦。
docker能安裝oracle嗎
可以用docker來部署oracle,而且好處很多。既能減少安裝的時間,又能夠快速進行部署。
使用docker來部署的好處如下:
(1)簡化配置,構(gòu)建一次后打包后就可以用作測試環(huán)境,也可以用作生產(chǎn)環(huán)境或與預(yù)生產(chǎn)環(huán)境,可以省去很多測試環(huán)節(jié)。比如一臺服務(wù)器可以進行測試多個版本的測試,不用等待。
(2)可以解決開發(fā)人員部署環(huán)境的困難,好比如一個剛來的新同事安裝環(huán)境可能需要半天時間,但要是直接運行一個已經(jīng)配好的容器的話就方便多了。
(3)應(yīng)用隔離,服務(wù)器整合,一個服務(wù)器可以用docker部署多套業(yè)務(wù),并且隔離性很高(除了虛擬機)。
(4)對于開發(fā)來說部署好之后到處運行便于開發(fā)調(diào)試。
(5)可以減少資源的利用,和虛擬機比較省去了很多不必要的資源,損失的隔離性其他的優(yōu)點足以彌補。
(6)對于運維來說,可以快速的進行擴容,減少原利用率
(7)每個小的服務(wù)都可以進行集群,docker對資源的利用比較小,可以在一臺服務(wù)器啟動多臺,相比其他產(chǎn)品對服務(wù)器的I/O使用上要多。
(8)可以多平臺部署
示例如下:
在Linux中安裝oracle非常麻煩,相信每個人也會遇到各種坑。為了一次裝好,也方便將來直接可以導(dǎo)出鏡像在各平臺移植使用,所以選擇用docker安裝
拉取鏡像
在 DockerHub 上搜索 Oracle 可以找到 Oracle 的官方鏡像,地址:https://hub.docker.com/
注意,這里使用 docker pull oraclelinux
命令,是拉取不到鏡像的,因為它沒有 latest 標(biāo)簽。因此,只能手動指定它的版本號
例如 docker pull oraclelinux
使用 官方鏡像 下載速度非常慢,因此,我們可以使用阿里鏡像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
在 dockerHub 上可以搜到 (第二個),可以參考這個配置使用
docker images
查看鏡像,確認(rèn)已經(jīng)下載完成
啟動容器
- 默認(rèn)啟動容器的方式
docker run -d -it -p 1521:1521 --name oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
- 持久化啟動的方式
docker run -d -it -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
查看啟動的線程 netstat -tulnp
查看運行狀態(tài) docker ps -a
容器內(nèi)環(huán)境配置
進入容器 docker exec -it oracle11g bash
切換到 root 用戶 su root
,密碼為 helowin
docker容器配置環(huán)境變量不是在 /etc/profile
中,容器啟動不會走這個文件。
可以將環(huán)境變量的配置設(shè)置在 /home/oracle/.bashrc
文件下,這樣可以省略掉軟連接的創(chuàng)建 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
編輯環(huán)境變量 vi /home/oracle/.bashrc
,在文件最后加入以下命令
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 export ORACLE_SID=helowin export PATH=$ORACLE_HOME/bin:$PATH
wq
保存并退出。然后使用 source /home/oracle/.bashrc
刷新環(huán)境變量,并使之生效
進入 oracle 命令行
使用 sqlplus /nolog
進入oracle命令行
使用 “操作系統(tǒng)認(rèn)證” 的方式,登錄oracle conn / as sysdba
如果直接使用默認(rèn)的 root 用戶登錄,會報登錄失敗。這里必須使用 su - oracle
命令,將當(dāng)前用戶切換到 oracle,然后在執(zhí)行登錄命令
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
這個錯誤是由于數(shù)據(jù)庫名用錯了
su - oracle sqlplus /nolog conn / as sysdba select instance_name from v$instance; show user;
使用上述命令查出來的,就是所有可用的 “數(shù)據(jù)庫名” 和 “用戶名”
阿里的這個鏡像,所有的密碼都是統(tǒng)一的 helowin
system用戶具有DBA權(quán)限,但是沒有SYSDBA權(quán)限。平常一般用該帳號管理數(shù)據(jù)庫。
而sys用戶是Oracle數(shù)據(jù)庫中權(quán)限最高的帳號,具有“SYSDBA”和“SYSOPER”權(quán)限,一般不允許從外部登錄
配置防火墻
防火墻要允許 1521 端口,外部的數(shù)據(jù)庫管理工具才能連的上
# 打開防火墻 systemctl start firewalld # 查詢端口狀態(tài) firewall-cmd --query-port=1521/tcp # 永久性開放端口 firewall-cmd --permanent --zone=public --add-port=1521/tcp # 重啟防火墻 firewall-cmd --reload firewall-cmd --query-port=1521/tcp
推薦學(xué)習(xí):《docker視頻教程》