在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用户或最高权限用户登录操作。
使用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
在Docker宿主机中执行以下命令下载最新的 iServer 镜像:
docker pull supermap/iserver
下载完成后,您可以通过以下命令查看已下载的image信息:
docker images
基于下载的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 相关的配置文件。
在上述步骤中,已通过-v参数指定了从宿主机到Docker容器的映射路径(-v `pwd`/my_opts:/opt),因此可以直接将数据放在宿主机的某一目录中(`pwd`/my_opts)。登录iServer服务管理器,进入快速发布服务向导,远程浏览时就可以直接在容器的相应目录下找到映射的数据并发布。
路径映射的方式可以用来发布文件型GIS数据,如文件型工作空间、MBTiles瓦片包等。对于存储在数据库中的GIS数据,如数据库型工作空间、MongoDB瓦片等,则无需此映射。建议将数据库单独部署,例如部署在宿主机上或其他机器上,并使所有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
教育版许可配置过程:请参考教育版许可