因為container是一個獨立的運行環境,我們要從本機連線進去必須透過docker的網路設定,相關的細節設定可以參考
這邊只就用得到的部分介紹.
- 延續前一篇的狀態,我們可以透過docker ps來觀察container的狀態(我們可以開新的終端機,執行ssh boot2docker->sudo sh進入docker):
你會看到container的代號(先記下很常用到),原始的Image,以及最重要的port連結,這些port代表Docker與container溝通的port.
$wget http://container_ip:8000
- 接著我們要知道container的IP
$docker inspect container_name | grep IPAddress
- 這時候我們回到ipython notebook去查ip(可以按esc+:q跳出)
發現預設的IP位置是http://localhost:8888要改掉這個設定(因為我們剛開始進入conatainer的時候,host已經該成sandbox,8888這個ip也連不出去)
- 我們先跳出ipython notebook(control+C),重新帶入新的參數進入
$ipython notebook --ip=sandbox --port=8088
- 這時候我們在docker就可以連到container中了
- 以下就是MAC USER要做的事情,因為mac並不能直接執行docker,所以是透過boot2docker來模擬一層centOS,才在上面執行docker,所以對於mac來說,要連線到container是分成兩個階段:先連線到boot2docker,再連線到container.剛剛我們只是打通後者而者.那前者的ip和port怎麼辦呢?
- ip比較簡單,在commend line輸入:
Mac$boot2docker ip
就可以查到ip,先把這個記下來
- 接著就是要暴露container的port到外部,這部分有幾個方法:
- 在docker file中expose port(https://docs.docker.com/reference/builder/)
- 在建立container的時候把port的對應設好,前面是本機地port,後面是container的port
docker run -i -t -h sandbox -p 8080:8080 [image:tag]
- 再來一種像我們這樣,container都建好了,要事後補救的就比較麻煩了:
- 先查詢container的ip
docker inspect container_name | grep IPAddress
- 用linux的指令暴露port
iptables -t nat -A DOCKER -p tcp --dport 8088 -j DNAT --to-destination 172.17.0.19:8088
- 當boot2docker的ip確定好,container的port暴露出來後,就可以在我們自己的本機端的瀏覽器接上container內部的python notebook(前面是boot2docker的ip,port是container接出來的port)
http://192.168.59.103:8088/
- 雖然我們已經順利透過本機連結container中的ipython notebook,但是還是不行操作spark(
過程到底要多冗長,(╯-_-)╯ ~╩╩) - 補上一篇參考資料:http://www.slideshare.net/adrienblind/docker-networking-basics-using-software-defined-networks
- 下一篇將會介紹怎樣在ipython中設定和spark接軌
- 最終章:[Spark][教學] Spark x Docker x ipython Notebook !(四)-pyspark設定+commit images
感謝分享一系列實用又詳細的文章, 請問下一篇什麼時候會發布?
回覆刪除謝謝~
應該這週末吧 哈 先活過這禮拜!
刪除不好意思, 請教一下.
刪除每次進入都要輸入
docker run -i -t -h sandbox sequenceiq/spark:1.2.0 bash
這行指令嗎?
謝謝
看你的用途.如果環境已經設定好,為了讓每次執行時的環境一致,就會用run(run 的時候可以增加--rm參數避免產生container https://docs.docker.com/reference/run/#clean-up-rm).
刪除如果是要延續之前開的container(例如東西做到一半就關掉),可以使用docker start(https://docs.docker.com/reference/commandline/cli/#start)開啟先前的container (使用docker ps -a可以看到先前所有開過還沒有刪除的container)
謝謝~ 已經參照您的步驟做完第三篇.
刪除期待第四篇中!!!!!!!
Orz...我希望今天晚上能生出來!
刪除[Spark][教學] Spark x Docker x ipython Notebook !(四)-pyspark設定+commit images
刪除http://bryannotes.blogspot.tw/2015/01/spark-spark-x-docker-x-ipython-notebook_28.html
剛剛發佈,請參考~有任何問題隨時跟我說~
謝謝~
刪除我這幾天用CentOS再實作一次,但在安裝 ipython notebook 時,要啟動時一直出現問題。
問題截圖:
https://db.tt/Y6v6I2x8
https://db.tt/4aSUpdyx
非常感謝回覆~謝謝
我自己沒遇過這個問題@@ 看訊息是因為ipython notebook啟動時會預設一個本地的ip做為啟動web服務的窗口,但是ipython無法指定那個ip
刪除試試看這裡的解決方式:
https://github.com/ipython/ipython/issues/5802
啟動sudo ifup lo
好文推一下~
回覆刪除謝謝>"<
刪除