在Docker中部署iServer

发送反馈


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

SuperMap iServer 现已在Docker中心上线,下载地址:http://hub.docker.com/r/supermap/iserver。仅需几步,即可在Docker中部署iServer。

下面以Ubuntu Wily 15.10为例,介绍如何在Docker中部署并运行iServer。

以下操作均需以root用户或最高权限用户登录操作。

安装Docker

使用apt-get操作下载安装软件包时,首先需要更新源,并安装apt-transport-https,确保系统能正确下载需要的文件,依次执行以下命令:

apt-get update

apt-get install apt-transport-https ca-certificates

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

进入 /etc/apt/sources.list.d目录,新建docker.list 文件,用于将Docker添加到apt软件安装源中:

cd  /etc/apt/sources.list.d

vi docker.list

在docker.list文件中添加以下内容:

deb https://apt.dockerproject.org/repo ubuntu-wily main

更新APT包索引,并确认 APT 是从正确的仓库获取文件:

apt-get update

apt-get purge lxc-docker

apt-cache policy docker-engine

对于Ubuntu系统,建议安装linux-image-extra包:

sudo apt-get install linux-image-extra-$(uname -r)

安装Docker,并启动:

sudo apt-get install docker-engine

sudo service docker start

验证Docker是否安装成功。这个命令会下载一个测试文件并且在一个容器里运行它。当容器运行后,将打印一些信息,并自动退出。

sudo docker run hello-world

由于docker的镜像中心在国外,下载速度比较慢。推荐使用阿里云加速器:https://help.aliyun.com/knowledge_detail/5974865.html,如操作系统是ubuntu,可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中,并重新启动Docker:

echo "DOCKER_OPTS=\"--registry-mirror=https://hqsuattf.mirror.aliyuncs.com\"" | sudo tee -a /etc/default/docker

sudo service docker restart

下载 iServer 镜像

在Docker宿主机中执行以下命令下载最新的 iServer 镜像:

docker pull supermap/iserver

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

docker images

运行Docker即可启动iServer

基于下载的iServer 镜像,运行一个Docker容器iserver1。执行如下命令:

docker run --name iserver1 -d -p 8090:8090 -v `pwd`/my_opts:/opt/iserverOPTs

其中,-p 8090:8090 表示对外暴露端口号为8090。-v表示映射数据路径,搭建集群时,使用此参数后可在主节点上发布服务。如果主节点不需要发布服务,则无需使用 -v 参数

等待几秒钟,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

注意: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 supermap/iserver

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

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

许可配置

当宿主机部署了正式许可后,如果将启动多个Docker,即启动多个iServer,初始化配置 iServer 时,可自行选择将要使用的许可模块。详见:启用许可。各类许可配置过程如下:

当网络中已有许可服务器时的配置过程:在环境变量添加 LICENSE_SERVER 这一参数,并将其值设为许可服务器的地址,如:

        LICENSE_SERVER=192.168.17.200

云许可配置过程:请参考云许可部分介绍

Web 许可配置过程:请参考 Web 版许可,值得注意的是,在有其他许可的情况下,若需要使用 Web 许可,则应在环境变量中添加以下配置:

        BSLICENSE_SERVER=ws://192.168.17.145:9183

教育版许可配置过程:请参考教育版许可