在Docker中部署iServer

发送反馈


Linux 容器虚拟技术(LXC,Linux Container)是一种轻量级的虚拟化手段,它利用内核虚拟化技术提供轻量级的虚拟化,来隔离进程和资源。Docker 扩展了 LXC,提供了更高级别的 API,并简化了应用的打包和部署,为终端用户创建彼此独立的私有环境,可有效节约开发者和系统管理员的环境部署时间。

SuperMap iServer 现已在阿里云和 Docker 中心上线(获取镜像的地址分别为 registry.cn-beijing.aliyuncs.com/supermap/iserver、supermap/iserver,建议您通过阿里云获取 iServer 镜像),仅需几步,即可在Docker中部署iServer。

安装 Docker

在公网环境中安装 Docker

在 Windows 上安装 Docker Desktop

1. 开启电脑的虚拟化。

一般电脑都是默认开启的,可以通过“任务管理器→性能→CPU”,查看虚拟化是否开启。

2. 开启 Hyper-V。

启用 Hyper-V 开启虚拟机,可以通过“控制面板→程序→启用或关闭 Windows 功能→勾选 Hyper-V”进行设置,启用后需重启计算机生效。

3. 访问 https://docs.docker.com/desktop/windows/install/,下载 Docker Desktop。

4. 安装 Docker Desktop ,按提示进行安装。

5. 打开 Docker Desktop,等待启用。

若提示"Hardware assisted virtualization and data execution protection must be enabled in the BIOS",可能是由于部分程序会禁用虚拟机管理程序。

解决方法:以管理员身份运行 CMD ,执行以下命令:

bcdedit /set hypervisorlaunchtype auto

操作成功后,重启计算机,并重新打开 Docker Desktop。

6. 当左下角的鲸鱼图标背景为绿色,说明 Docker 可用。

在 Linux 上安装 Docker

通过便捷脚本安装

本操作以 CentOS-7-x86_64 为例,该便捷脚本适用于 CentOS、Debian、Ubuntu 等多个系统,不支持自定义安装配置,详情请参见官方文档:https://docs.docker.com/engine/install/。

注:需以 root 用户或最高权限用户登录并执行下述操作。

1. 使用便捷脚本安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2. 安装完成后,执行以下命令查看 Docker 版本,确认已安装成功:

docker --version

手动安装

本操作以 Ubuntu_18.04_LTS x86_64 为例,其他系统的 Docker 安装可参考官方安装文档:https://docs.docker.com/engine/install/。

注:需以 root 用户或最高权限用户登录并执行下述操作。

1. 卸载可能存在的旧版本:

apt-get remove docker docker-engine docker.io containerd runc

2. 更新 apt 包索引:

apt-get update

3. 安装以下包,使 apt 可以通过 HTTPS 使用存储库(repository):

apt-get install -y apt-transport-https ca-certificates curl software-properties-common

4. 添加GPG密钥及设置 stable 存储库

4.1 添加 Docker 官方的GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4.2 设置 stable 存储库:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

4.1 添加阿里云的GPG密钥:

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

4.2 设置stable存储库:

add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

5. 再次更新 apt 包索引:

apt-get update

6. 安装最新版本的 Docker CE:

apt-get install -y docker-ce

至此,已经完成Docker的安装,通过以下命令可以验证是否成功:

docker run hello-world

该命令会下载一个测试文件并且在一个容器里运行它。当容器运行后,将打印一些信息,并自动退出。

离线安装 Docker

针对无法连接公网的局域网场景,我们收集制作了常见操作系统的 Docker 离线安装包,如有需要可联系 SuperMap 支持中心获取。您也可以参考 Docker 官方文档进行安装:https://docs.docker.com/engine/install/binaries/。

安装完成后,启动 Docker:

service docker start

获取 iServer 镜像

注:若为 Windows 系统,则打开 CMD(命令提示符),执行操作;若为 Linux 系统,需以root用户或最高权限用户登录并执行操作。

在公网环境中获取 SuperMap iServer 镜像

  1. 获取 iServer 镜像

您可以通过阿里云获取 iServer 镜像。

拉取指定版本的 iServer 镜像,需要输入对应的 tag,规则如下:

Linux X86-64 架构的镜像 tag:[版本号]-amd64

Linux ARM64 架构的镜像 tag:[版本号]-arm64

例如,输入以下命令即可获取 Linux X86-64 架构 11.2.0 版本的 iServer 镜像:

docker pull registry.cn-beijing.aliyuncs.com/supermap/iserver:11.2.0-amd64

输入以下命令即可获取 Linux ARM64 架构 11.2.0 版本的 iServer 镜像:

docker pull registry.cn-beijing.aliyuncs.com/supermap/iserver:11.2.0-arm64

  1. 查看镜像信息

下载完成后,您可以通过以下命令查看已下载的 image 信息:

docker images

获取离线 SuperMap iServer 镜像

  1. 针对无法连接公网的局域网场景,您可以联系 SuperMap 支持中心获取离线的 iServer 镜像。
  2. 将获取到的 iServer 镜像(*.tar)拷贝到离线环境中,并导入到 Docker 中

docker load -i *.tar

  1. 通过以下命令查看是否导入成功:

docker images

启动并使用 iServer

运行 Docker 容器

基于获取的 iServer 镜像,运行一个Docker容器 iserver1。

docker run --name iserver1 -d -p 8090:8090 -v `pwd`/my_opts:/opt/iserverOPTs registry.cn-beijing.aliyuncs.com/supermap/iserver:11.2.0-amd64

其中:

--name 表示为容器指定一个名称。--name iserver1表示指定容器名称为 iserver1;

-d 表示后台运行容器,并返回容器ID;

-p 指定端口映射,格式为:主机(宿主)端口:容器端口。-p 8090:8090 表示指定映射的主机端口(对外暴露端口)为8090,容器端口也为8090;

 iServer_JAVA_OPTS 表示 iServer 的 Java 内存配置;

-v 表示映射数据路径,格式为:主机(宿主)路径:容器路径。搭建集群时,使用此参数后可在主节点上发布服务。如果主节点不需要发布服务,则无需使用 -v 参数;

registry.cn-beijing.aliyuncs.com/supermap/iserver 表示对应的镜像名称。如您是获取的离线镜像,则此处应输入对应的镜像名称。您可以通过以下指令,查看查看已有本地仓库已有的镜像信息:

docker images

等待几秒钟,iServer 启动完成。在浏览器中输入 http://<宿主机IP>:8090,即可访问 iServer。

置环境变量(可选)

若要使用 iServer 的分布式分析服务,则在运行时需要设置 distributeanalysthost 这个环境变量,其中,distributeanalysthost 对应的是容器内部的ip。

docker run --name iserver1 -d -p 8090:8090 --env distributeanalysthost="172.17.0.2" -v `pwd`/my_opts:/opt/iserverOPTs registry.cn-beijing.aliyuncs.com/supermap/iserver:11.2.0-amd64

注意:my_opts 代表要从宿主机中要映射到容器的数据所在的文件夹,可以根据您计算机中的实际路径自定义,/opt/iserverOPTs 为一个已存在于容器中的文件夹,用于存放所有 iServer 相关的配置文件。

在 iServer 上发布 GIS 服务

在上述步骤中,已通过-v参数指定了从宿主机到 Docker 容器的映射路径(-v `pwd`/my_opts:/opt),因此可以直接将数据放在宿主机的某一目录中(`pwd`/my_opts)。登录 iServer 服务管理器,进入快速发布服务向导,远程浏览时就可以直接在容器的相应目录下找到映射的数据并发布。

路径映射的方式可以用来发布文件型 GIS 数据,如文件型工作空间、MBTiles 瓦片包等。对于存储在数据库中的 GIS 数据,如数据库型工作空间、MongoDB 瓦片等,则无需此映射。建议将数据库单独部署,例如部署在宿主机上或其他机器上,并使所有 iServer 都可以访问该数据库。

基于Docker搭建iServer集群

可将上述示例中启动的 iServer 作为集群主节点。启动容器son1,作为集群子节点:

docker run --name son1 --link iserver1:master -v /home/data:/home registry.cn-beijing.aliyuncs.com/supermap/iserver:11.2.0-amd64

<clustering>    

 <reporters>    

   <reporter>    

     <enabled>true</enabled>     

     <address>http://master:8090/iserver/services/cluster</address>         

     <isTileWorker>true</isTileWorker>      

   </reporter>   

  </reporters>      

</clustering>  

两个容器都启动后,可以通过http://<宿主机IP>:8090 访问服务,并在“集群”页面看到子节点已经添加完成,子节点也可以作为切图子节点参与切图任务。

在主节点上开启集群服务,即可使用集群功能。

许可配置

Docker 部署 iServer 许可配置方法如下:

-e LICENSE_SERVER=许可服务器 IP