部署SAP Docker开发版本(SAP ABAP Platform 1909 on SAP HANA 2.0)

SAP版本镜像


SAP官方已经停止发布,镜像已经移除,从dockerhub中找了网友amitlaldocker的镜像(未经验证),本文是基于官方镜像进行的部署
非官方镜像
本次部署在虚拟机上进行按照docker镜像要求

  • cpu 4
  • 内存 16G
  • 硬盘 150G

1.安装操作系统

我采用的是centos7.6(1810) cpu 16 内存 16G 硬盘500G 为防止空间不够 将整个空间全部分配到 /.



安装操作系统并更新补丁。

2.安装Docker

运行 yum install docker-ce docker-ce-cli containerd.io
启动docker systemctl start docker
配置docker加速服务 创建文件vim /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

重启守护进程及docker服务 systemctl daemon-reload systemctl restart docker
测试docker docker run hello-world成功运行

测试

3.安装sap docker镜像

拉取镜像docker pull store/saplabs/abaptrial:1909 ,镜像大小23G,非官方镜像拉取docker pull amitlaldocker/abaptrial:1909(未验证)
创建容器 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.并跳过环境检测,使用了参数--stop-timeout,该参数会使 Docker 给 HDB 足够的时间在关闭请求时将其 InMemory 数据库写入磁盘。

端口用途

启动

执行后跳出许可协议确认,填写accept (使用参数-agree-to-sap-license,可以跳过手动输入接受)
成功

出现如图则代表容器成功运行

确保容器第一次运行成功,不成功也要把容器内/opt/sap/ASABAP_license拷贝出来,镜像在第一次生成的容器中自动生成的license是可用的,再创建新的容器时会生成新的license,但是不可用。

4.登录SAP

配置登录地址,实例编号00 系统标识A4H 服务器地址配虚机地址

因操作系统防火墙开着对相应端口进行开通
firewall-cmd --zone=public --add-port=3200/tcp --permanent...
firewall-cmd --reload
账号DEVELOPER,密码Ldtf5432,语言EN

5.搭建中遇到的问题

  1. docker run 镜像报错
    首次运行没有注意linux内核限制检查,导致启动报错
Cannot continue because of insufficient system limits configuration!
If you want to continue without recommended limits,
run again with the parameter -skip-limits-check

按文档在启动参数中加入--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但是启动依旧没有成功,最终还是采用了跳过检测参数-skip-limits-check

  1. docker 新建sap容器报错
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.

因为容器的名称a4h已经存在,用docker rm -f a4h将之前失败的容器删除

  1. 启动后license失效
    成功运行容器后,登录报Logon not possible (error in license check),推测应该是镜像第一次生成容器时自动生成的license为有效的,后面容器在生成就没有用了,所以在容器第一次生成时要将/opt/sap/ASABAP_license其拷贝出来,以备后面使用。但是首次部署没注意到这点,容器以被删除,搜索资料后,可以在 https://go.support.sap.com/minisap/#/minisap 生成一个新的临时license
选择版本

到底部填写信息,生成即可


填写信息

硬件编码可以进容器查看现有ASABAP_license获取, docker exec -it a4h /bin/bash 进入容器 cat /opt/sap/ASABAP_license 查看lisence,找到HARDWARE-KEY

生成license后传入linux,使用命令 docker cp a4h:/opt/sap/ASABAP_license 复制license到容器内,用docker exec -it a4h /usr/local/bin/asabap_license_update 更新许可证,系统成功登录。

  1. 关于系统的启停问题
    在以交互模式运行的界面,可以直接按ctrl+c停止运行,如果这个界面关掉了,系统服务依旧正常运行,这时可以采用docker stop --time 7200 a4h进行停止
    可以使用docker start -ai a4h重新启动容器,但是这样会生成新的license,应该加上-no-asabap-license-update参数,防止许可证更新(未验证),也可以在容器中创建文件/opt/sap/.no_ASABAP_license_update来阻止容器更新许可证(未验证)

修改于2022.11.15,补充SAP官方镜像移除后,其他镜像源及说明

你可能感兴趣的:(部署SAP Docker开发版本(SAP ABAP Platform 1909 on SAP HANA 2.0))