2016-12-15 36 views
1

我試圖運行一個簡單的碼頭容器與Tensorflow可用(首先與CPU)。我認爲只設置一次Dockerimage是一個好主意(即每次運行容器時都不更新張量流版本)。在碼頭集裝箱或碼頭影像中使用Tensorflow的正確方法是什麼?

# This means you derive your docker image from the tensorflow docker image 
FROM gcr.io/tensorflow/tensorflow 
然而

,當我跑我的碼頭工人容器我做pip list和沒:

爲此,我建議做,因爲在我的Dockerfile遵循(註釋從給我的建議,源來) 「看不到Tensorflow可在任何地方加上當我跑我的劇本,我得到了熟悉的錯誤:

ImportError: No module named 'tensorflow' 

我想到了一個辦法來解決這個由僅僅有我Dockerfile明確pip3 install tensorflow。我計劃做一個bash腳本,並有我的Dockerfile運行:

# bash script intall_tensorflow.sh 
# to install Tensorflow in container 
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.12.0rc1-py3-none-any.whl 
pip3 install --upgrade $TF_BINARY_URL 

,然後只需添加到泊塢窗文件:

RUN sh intall_tensorflow.sh 

然而,我的直覺告訴我,這可能是錯誤的或過於哈克。爲什麼我會首先需要tensorflow基礎圖像FROM gcr.io/tensorflow/tensorflow,如果我以後要手動安裝Tensorflow?

我試過在線研究gcr.io/tensorflow/tensorflow可能在做什麼,但我還沒有發現任何超級有用的東西。是否有人知道什麼是從圖像本身(例如,構建Docker鏡像)在Docker容器中提供Tensorflow的正確方法?

對不起,如果我真的很密集,但它只是覺得我做錯了什麼,我找不到解決我的問題的在線問題。


在看了答案後,似乎主要問題可能是python 3由於某種原因找不到tensorflow,但是python 2可以。這是否意味着我需要自己直接安裝TensorFlow(在docker映像中使用pip)以便正確版本的TensorFlow可用?

回答

1

根據您對pip3的使用情況判斷 - 您使用的是python 3嗎?這可能會導致你的問題。我試圖重新您的問題,但是Python 2似乎是做工精細:

[email protected]:~$ docker run -it gcr.io/tensorflow/tensorflow /bin/bash 
[email protected]:/notebooks# python 
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import tensorflow 
>>> 
[email protected]:/notebooks# python3 
Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import tensorflow 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'tensorflow' 
>>> 

如果由於某種原因,還是引起了你的問題,你也可以只安裝它自己你描述的方式。 Docker的一個好處是,它在從Dockerfiles創建圖像時緩存圖像,因此每次構建圖像​​時都不會重新安裝張量。 This article解釋了一些概念。

+0

我複製了你的建議。看來,當我做python3它不能識別tensorflow被安裝。也許'gcr.io/tensorflow/tensorflow'使用tensorflow二進制python 2.你知道這是真的嗎?另外,是否沒有其他方式,除了手動(如我所建議的),在docker中安裝python 3的tensorflow? –

+0

另外,爲什麼你需要在docker運行結束時使用bash命令,似乎沒有它,這個特定的圖像會出現一些奇怪的筆記本警告,這些警告似乎存在安全問題。但是,似乎運行沒有其他圖像bash的容器是好的。你知道爲什麼有時需要打屁股,有時不打算? –

+1

是的,實際上,只需使用適當的標籤,例如gcr。io/tensorflow/tensorflow:latest-py3。對於不同標籤的列表,您可以在這裏查找示例:https://hub.docker.com/r/tensorflow/tensorflow/tags/或者只需按照瀏覽器中的gcr.io/tensorflow/tensorflow鏈接 –