2016-06-10 100 views
0

我最近切換到了一臺新的(Windows 10)計算機,需要選擇我在tensorflow中進行的一些開發。我的工作很好(與鏈接的文章有點不同),用docker run -d -P engineero/tensorflow:df_build(我的圖像通過修改主repo的Dockerfile來引入一些額外的依賴關係)。但我還有兩個問題:在Docker,tensorflow,Windows 10中使用本地文件系統和MySQL數據庫

  1. 我找不出如何在我運行的Docker容器中使用和修改現有的jupyter筆記本。
  2. 我不知道如何連接到我的機器上運行的MySQL數據庫。

對於我曾嘗試添加-v /c/Users/path/to/my/files:/tensorflow/my_filesdocker run命令,以及/c/Users/path/to/my/files/*:/tensorflow/my_files。對於這兩者,我在我的虛擬機中獲得/tensorflow/my_files目錄,但它是空的。我需要能夠使用我的文件系統中現有的筆記本(以及其他一些文件),並且對這些文件所做的更改會保留在我的文件系統中。

對於,我真的不知道。 MySQL數據庫當前正在Windows localhost上運行,但是如果我在腳本中引用localhost以連接到數據庫,則會嘗試連接到守護程序(我認爲),這不是一樣的:docker-machine ip不會給我127.0。 0.1(從Windows的角度來看,localhost),並且我必須連接到jupyter筆記本的IP /端口是我從docker-machine ipdocker ps -l獲得的一些其他地址。

任何幫助將不勝感激。如果我完全在錯誤的頁面上,我會歡迎討論正確的方式去做這件事。我現在正在通過Docker documentation,但到目前爲止我還沒有找到解決方案。

編輯:數已經回答了,但數仍然在逃。

回答

2

我沒有在Windows上使用Docker,所以我無法回答你的第一個問題。但是,我可以回答你的第二個問題。當你在Windows/Mac上運行Docker時,它會在虛擬機內運行,因爲你可能已經知道了。當您調用docker run時,它會創建一個可以被視爲另一個VM的容器(實際上不是虛擬機,但僅用於某些用途)。因此,當您從容器內部引用localhost時,它將嘗試連接到該容器內的localhost。爲了克服這種情況,無論您從docker-machine ip獲得的IP地址是什麼,您都應該使用VM的IP地址(對於Mac,192.168.99.100,對於Windows,我想它也是一樣的)。如果您碰巧使用Linux,則應使用主機的實際IP地址。

我根據你的評論編輯了以下內容。只有在Docker中運行MySQL時,以上纔是真實的。如果您嘗試連接到本機運行的MySQL,則應使用PC的實際IP地址(可通過Windows上的命令提示符使用ipconfig找到該地址),而不考慮操作系統。

我不知道你對虛擬機的概念有多熟悉。虛擬機就像獨立的個人電腦,但不同之處在於它們在個人電腦內運行。如果你想從PC上與另一臺電腦通話,最簡單的方法是使用外部IP地址。 p.s.你也應該允許你的MySQL接受遠程連接。 This link解釋了你是如何做到的。

+0

所以你說我應該告訴我的腳本連接到碼頭IP(它實際上是192.168.99.100),即使我的數據庫在Windows本地主機(127.0.0.1)上運行? – Engineero

+0

對不起,我誤解了你的問題。錯過了你本來正在運行MySQL的觀點(當我試圖回答這個問題時,我正在衝出去)。我在上面更正了我的答案。 – techtabu

+0

太好了,謝謝!這是有道理的,我只是沒有想到它,因爲我習慣於不需要在虛擬機中運行這些東西。我會給那一槍。 – Engineero

相關問題