SAP官方已經(jīng)停止發(fā)布,鏡像已經(jīng)移除尊搬,從dockerhub中找了網(wǎng)友amitlaldocker的鏡像(未經(jīng)驗(yàn)證)叁鉴,本文是基于官方鏡像進(jìn)行的部署
非官方鏡像
本次部署在虛擬機(jī)上進(jìn)行按照docker鏡像要求
- cpu 4
- 內(nèi)存 16G
- 硬盤(pán) 150G
1.安裝操作系統(tǒng)
我采用的是centos7.6(1810) cpu 16 內(nèi)存 16G 硬盤(pán)500G 為防止空間不夠 將整個(gè)空間全部分配到 /.
安裝操作系統(tǒng)并更新補(bǔ)丁。
2.安裝Docker
運(yùn)行 yum install docker-ce docker-ce-cli containerd.io
啟動(dòng)docker systemctl start docker
配置docker加速服務(wù) 創(chuàng)建文件vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
重啟守護(hù)進(jìn)程及docker服務(wù) systemctl daemon-reload
systemctl restart docker
測(cè)試docker docker run hello-world
成功運(yùn)行
3.安裝sap docker鏡像
拉取鏡像docker pull store/saplabs/abaptrial:1909
佛寿,鏡像大小23G幌墓,非官方鏡像拉取docker pull amitlaldocker/abaptrial:1909
(未驗(yàn)證)
創(chuàng)建容器 docker run --stop-timeout 3600 -i --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 50000:50000 -p 50001:50001 store/saplabs/abaptrial:1909 -skip-limits-check
按照官方文檔 容器命名只能是a4h,映射端口3200、3300、8443常侣、30213蜡饵、50000、50001.并跳過(guò)環(huán)境檢測(cè),使用了參數(shù)--stop-timeout胳施,該參數(shù)會(huì)使 Docker 給 HDB 足夠的時(shí)間在關(guān)閉請(qǐng)求時(shí)將其 InMemory 數(shù)據(jù)庫(kù)寫(xiě)入磁盤(pán)溯祸。
執(zhí)行后跳出許可協(xié)議確認(rèn),填寫(xiě)accept (使用參數(shù)-agree-to-sap-license舞肆,可以跳過(guò)手動(dòng)輸入接受)
出現(xiàn)如圖則代表容器成功運(yùn)行
確保容器第一次運(yùn)行成功焦辅,不成功也要把容器內(nèi)
/opt/sap/ASABAP_license
拷貝出來(lái),鏡像在第一次生成的容器中自動(dòng)生成的license是可用的胆绊,再創(chuàng)建新的容器時(shí)會(huì)生成新的license氨鹏,但是不可用。
4.登錄SAP
配置登錄地址压状,實(shí)例編號(hào)00
系統(tǒng)標(biāo)識(shí)A4H
服務(wù)器地址配虛機(jī)地址
因操作系統(tǒng)防火墻開(kāi)著對(duì)相應(yīng)端口進(jìn)行開(kāi)通
firewall-cmd --zone=public --add-port=3200/tcp --permanent
...
firewall-cmd --reload
賬號(hào)DEVELOPER
,密碼Ldtf5432
,語(yǔ)言EN
5.搭建中遇到的問(wèn)題
- docker run 鏡像報(bào)錯(cuò)
首次運(yùn)行沒(méi)有注意linux內(nèi)核限制檢查仆抵,導(dǎo)致啟動(dòng)報(bào)錯(cuò)
Cannot continue because of insufficient system limits configuration!
If you want to continue without recommended limits,
run again with the parameter -skip-limits-check
按文檔在啟動(dòng)參數(shù)中加入--sysctl kernel.shmmax=21474836480 --sysctl kernel.shmmni=32768 --sysctl kernel.shmall=5242880 --sysctl kernel.msgmni=1024 --sysctl kernel.sem="1250 256000 100 8192" --ulimit nofile=1048576:1048576
但是啟動(dòng)依舊沒(méi)有成功,最終還是采用了跳過(guò)檢測(cè)參數(shù)-skip-limits-check
- docker 新建sap容器報(bào)錯(cuò)
Error response from daemon: Conflict. The container name "/a4h" is already in use by container
XYZ. You have to remove (or rename) that container to be able to reuse that name.
因?yàn)槿萜鞯拿Qa4h已經(jīng)存在种冬,用docker rm -f a4h
將之前失敗的容器刪除
- 啟動(dòng)后license失效
成功運(yùn)行容器后镣丑,登錄報(bào)Logon not possible (error in license check),推測(cè)應(yīng)該是鏡像第一次生成容器時(shí)自動(dòng)生成的license為有效的,后面容器在生成就沒(méi)有用了娱两,所以在容器第一次生成時(shí)要將/opt/sap/ASABAP_license
其拷貝出來(lái)莺匠,以備后面使用。但是首次部署沒(méi)注意到這點(diǎn)十兢,容器以被刪除趣竣,搜索資料后,可以在 https://go.support.sap.com/minisap/#/minisap 生成一個(gè)新的臨時(shí)license
到底部填寫(xiě)信息旱物,生成即可
硬件編碼可以進(jìn)容器查看現(xiàn)有ASABAP_license獲取遥缕, docker exec -it a4h /bin/bash
進(jìn)入容器 cat /opt/sap/ASABAP_license
查看lisence,找到HARDWARE-KEY
生成license后傳入linux宵呛,使用命令 docker cp <local path the key file> a4h:/opt/sap/ASABAP_license
復(fù)制license到容器內(nèi)单匣,用docker exec -it a4h /usr/local/bin/asabap_license_update
更新許可證,系統(tǒng)成功登錄宝穗。
- 關(guān)于系統(tǒng)的啟停問(wèn)題
在以交互模式運(yùn)行的界面户秤,可以直接按ctrl+c
停止運(yùn)行,如果這個(gè)界面關(guān)掉了逮矛,系統(tǒng)服務(wù)依舊正常運(yùn)行鸡号,這時(shí)可以采用docker stop --time 7200 a4h
進(jìn)行停止
可以使用docker start -ai a4h
重新啟動(dòng)容器,但是這樣會(huì)生成新的license须鼎,應(yīng)該加上-no-asabap-license-update
參數(shù)膜蠢,防止許可證更新(未驗(yàn)證)堪藐,也可以在容器中創(chuàng)建文件/opt/sap/.no_ASABAP_license_update
來(lái)阻止容器更新許可證(未驗(yàn)證)
修改于2022.11.15莉兰,補(bǔ)充SAP官方鏡像移除后挑围,其他鏡像源及說(shuō)明