这篇文章呢,向大家介绍Linux系统通过Docker配置ArcGIS API for Python的几种方式。
第一种:使用Esri提供的Docker镜像
Esri在Docker Hub上传了ArcGIS API for Python的镜像,名称为arcgis-api-python-notebook。
安装
安装方式很简单,像安装其他Docker镜像一样,使用命令docker pull esridocker/arcgis-api-python-notebook
就可以拉取该镜像。
运行
拉取镜像后,通过命令docker run -it -p <localport>:8888 esridocker/arcgis-api-python-notebook
可运行该镜像,其中localport是宿主机的端口,一般为了方便可以也设置为8888。
运行成功后会有如下提示:
[I 06:13:47.922 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:13:48.182 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.6/site-packages/jupyterlab
[I 06:13:48.182 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 06:13:48.184 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 06:13:48.184 NotebookApp] The Jupyter Notebook is running at:
[I 06:13:48.184 NotebookApp] http://(d95711aca0c2 or 127.0.0.1):8888/?token=0885e534993aadec8acce8eb8c6f57a8528ddf0355bb19d9
[I 06:13:48.184 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:13:48.184 NotebookApp]
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://(d95711aca0c2 or 127.0.0.1):8888/?token=0885e534993aadec8acce8eb8c6f57a8528ddf0355bb19d9
记住最后一行的token
的值,第一次在网页上访问Jupyter Notebook时需要输入token或者密码。
如果不想运行后一直看到这些信息(毕竟还需要处理其他的工作),可以在运行时添加-d
参数,也就是像这样docker run -d -it -p <localport>:8888 esridocker/arcgis-api-python-notebook
。
这样运行后,不会看到上面的那些信息。那么如何获取到token来访问呢?很简单哦,仅需要2步:
- 使用命令
docker exec -it <docker_container_id> /bin/bash
- 敲入命令
jupyter notebook list
,查看当前运行的notebook server,其中就有token - 最后,使用命令
exit
退出当前容器
局限
这种方式的优点就是很方便,不需要额外的安装包就能使用ArcGIS API for Python。但是,它也有使用局限,就是没有提供root
用户的密码。
没有root
用户密码,就不能修改某些系统文件,或者安装某些包,比如:
- 不能修改
hosts
文件用来添加本地Enterprise的IP和域名对应关系,这样就会导致使用本地Enterprise初始化GIS
实例时会报错 - 不能配置本地保存资格证书,详细内容请查看另一篇博客
第二种:使用Anaconda3镜像配置ArcGIS API for Python
这种方式,首先是拉取Anaconda3的镜像,然后在其中依次安装Jupyter Notebook和arcgis。
安装
我们需要从网上拉取Anaconda3镜像,使用命令是docker pull continuumio/anaconda3
。
运行
拉取Anaconda3的镜像后,使用命令docker run -d -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root"
,
在运行该镜像时,会执行-c
参数传入的命令,安装Jupyter Notebook。
安装成功后,使用命令docker exec -it <docker_container_id> /bin/bash
进入容器,然后安装arcgis包:conda install -c esri arcgis
。
然后,使用命令jupyter notebook list
查看token。
最后,使用命令exit
退出当前容器。
在浏览器端输入http://<ip>:8888
访问Notebook Server,输入以下代码测试环境是否配置完成:
from arcgis.gis import GIS
gis = GIS()
gis.properties.portalName
如果输出结果为ArcGIS Online
表示环境配置成功。