2016-05-15 16 views
3

我是碼頭工的新手。碼頭工人 - 如何添加新的python依賴關係到現有的碼頭圖像?

我在使用我的Windows 10操作系統中的tensorflow docker時遇到了困難。

由於我遵循Udacity的深度學習課程,我已經按照instruction下載了tensorflow碼頭工並嘗試啓動第一個任務。

但它未能啓動,因爲碼頭圖像丟失了scikit-learn包。

所以基本上我做什麼來解決這個問題是我第一次運行我的搬運工圖像:

docker run -it -p 8888:8888 b.gcr.io/tensorflow/tensorflow /bin/bash 

,然後我運行:

pip install -U scikit-learn 

,然後我跑(可能不是100%正確但類似的東西):

./run_jupyter.sh 

要啓動iPython筆記本進行我的任務。

我的問題很簡單:

如何保存這種變化,我發生了此泊塢窗圖像上,所以我不必每次我不得不重新啓動筆記本重複這一步呢?

我可以通過修改docker配置文件來做到這一點嗎?

回答

3

一旦你的容器處於正確的狀態(安裝scikit-learn,腳本被執行),停止它(docker stop),並提交它作爲一個新的形象。

請參閱docker commit以便將容器的文件更改或設置提交到新映像。

然後,您可以運行新圖像(使用與之前相同的參數),但從該新圖像創建的容器將具有之前的步驟。

但另一種方法是從tenserflow udacity Dockerfile建立您的圖像。

FROM gcr.io/tensorflow/tensorflow:latest 
MAINTAINER Vincent Vanhoucke <[email protected]> 
RUN pip install scikit-learn 
RUN rm -rf /notebooks/* 
ADD *.ipynb /notebooks/ 
WORKDIR /notebooks 
CMD ["/run_jupyter.sh"] 

該圖像默認情況下會執行正確的命令。

+0

非常感謝VonC。這非常有幫助。但在bash shell中,如果輸入docker stop命令,它不會識別'docker'。我應該首先退出shell,然後輸入docker commit? – user8079

+0

@ user8079是的,docker stop是在主機shell中鍵入的,而不是在容器shell中。 – VonC

相關問題