這篇文章呢,向大家介紹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
表示環境配置成功。