Mais conteúdo relacionado
Semelhante a 認識那條鯨魚 Docker 初探 (20)
認識那條鯨魚 Docker 初探
- 2. 王仲昀 / Cloud
Github ID: fatcloud
用途不明的技能練得很多,從電
子電路到機械甚至光學都摸過一
陣子,都能自幹一些東西。
練的最深的技能仍然是寫程式
- 4. I come, I see, I conquer.
- Emperor Seabunny
- 5. 拍.電.視.時間 (Python Computer Vision time)
臉書描述:
一個企圖把對 Python + OpenCV 有興趣的人類聚集起來,讓大家一起挖坑跳坑、
Demo 斷頭 project,分享一些用途不明的新奇技術,以及堆積整體開發實力的社團
目前狀態:
● 有人挖坑 + 跳坑 [||..............]
● Demo 斷頭 project [||..............]
● 分享一些用途不明的新奇技術 [||||||||........]
● 堆積整體開發實力 [||||............]
一個每一到三星期就會舉辦分享活動,討論較深較有趣的軟體技術的社團。
- 6. 成就回顧
● 挖坑 / 跳坑 + Demo 斷頭 project 記錄
○ 雷射筆畫螢幕 => 自挖自跳自 Demo
■ 製做完整的火焰效果
■ 做成 chrome 的 plug-in 讓它能在簡報時直接使用 (?)
● 分享 / 試玩新技術
○ 動作顯微鏡
○ 類神經致敬神器
○ 天社福肉 (TensorFlow) 土魠魚油 (tutorial)
● 堆積整體開發實力
○ TechTree!
- 10. 歡迎加入
● TechTree 的研發團
○ 軍師
○ 武將
○ 工兵
● 揪團打怪
● 有趣的講題分享
[預告] 下星期將會以 Shadertoy 為出發點帶大家認識 OpenGL / WebGL 這類的語
言,學著自己寫 Shader 跑圖出來!!
- 12. 回顧剛才執行 TechTree 節點的動作
py27-cv2-ubuntu1404.py 其實是用來組出下面這個命令
docker run -it --rm -e DISPLAY -w /exp -v $HOME/.Xauthority:/home/developer/.
Xauthority --net=host --privileged -v /home/cloud/Github/PyCV-
time/experiments/augmented_reality:/exp fatcloud/py27-cv24-gui-camera python
/exp/AR_realtime.py
- 16. 基本概念
● Docker 讓你在同一台電腦上的平行世界執行程式
● 關於平行世界的詞彙有兩個
○ container
○ image
● 一個 container 就是一個平行世界的分支
● 一個 image 則是一種 container 的樣板
● 用法大致就是
○ <要執行的指令> 改成 docker <一堆參數設定> <平行世界名稱> <要執行的指令>
○ 以 firefox http://ppt.cc/7KJuO 為例
- 17. 創造平行世界分支(container)之前要有樣板(image)
● 搜尋: docker search <keyword>
○ docker search tensoflow => 出現 xblaster/tensorflow-jupyter.
● 下載: docker pull <image_name>
○ docker pull xblaster/tensorflow-jupyter
● 撰寫 / 尋找野生的 Dockerfile
○ 例如這個
● 然後建立:docker build <image_name> <Dockerfile>
● 檢查自己的電腦上現在有哪些 image:docker images.
- 18. 從樣板出發創造平行世界分支 (container)
● 執行 docker images ⇒ 顯示有名為 ubuntu 的 image
● 執行 docker run ubuntu bash 就會在 ubuntu 的環境執行 bash
● 沒有反應?因為它發生在平行世界裡我們看不到阿~~
● 執行 docker run -it ubuntu bash 才會把異世界的訊息接到當前的 terminal 上
● 再開一個 terminal 執行 docker ps 就可以看到現正運行的 container
- 19. 進到異世界胡搞瞎搞 (start, exec, stop)
● docker run -it ubuntu bash 成為新世界的 root 以後,現在要幹嘛咧?
● 胡亂做點改變再出去
○ echo “haha” > a.txt
○ cat a.txt
● 重新執行一次 docker run -it ubuntu bash 成為新世界的神,剛剛那個檔案 a.txt
到哪去了?
● 把已經執行到停止的平行世界分支找回來 docker ps -a
● 啟動那個分支 docker start <被自動取的名子>
● 它還是在平行世界裡我們看不到
● docker exec -it <被自動取的名子> bash 你就可以回去為所欲為了
● 不過這次你要呼叫 docker stop <被自動取的名子> 才能讓它停下來
● 其實也可以 docker start -i <被自動取的名子> 反應會跟第一次執行一樣
- 20. 把現實世界的檔案掛載到 container 裡
● 在執行 docker run 的時候使用 -v <本機資料夾>:<掛載路徑>
● docker run -it -v ~/Desktop/:/hahaha ubuntu bash
● 這樣養在異世界裡的程式就可以對這資料夾裡的檔案為所欲為啦!
● 已經忘記是在哪看到,見過一個資訊說掛載要掛資料夾,不要掛單一檔案
- 23. 執行 GUI 環境
● 我的做法來自這篇教學以及下方的留言
● X11 是一支在原生作業系統上執行的程式,負責執行視窗
● 所有的程式想要開出視窗來都要拜託 X11
● X11 表示:欸你誰阿?
● 你執行的程式表示:我 root 啦我超大
● X11:root 是誰阿沒聽過,掰(掛電話)
- 24. 執行 GUI 程式 - 解法
● 在異世界裡創一個帳號,和本機上的帳號有相同的 uid 及 gid
● 找出 uid/gid 的命令:id
● export uid=1000 gid=1000 &&
mkdir -p /home/developer &&
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd &&
echo "developer:x:${uid}:" >> /etc/group &&
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer &&
chmod 0440 /etc/sudoers.d/developer &&
chown ${uid}:${gid} -R /home/developer
● 換身份 su developer
- 25. 其實要顧的事項還不只於此
● 執行前要把環境變數給好
○ -e DISPLAY=$DISPLAY
● 護照也要用 -v 傳給 developer
○ -v $HOME/.Xauthority:/home/developer/.Xauthority
● 一般程式和 X11 溝通的通道也要接進去
○ -v /tmp/.X11-unix:/tmp/.X11-unix
● 執行 firefox 要把對外的網路也連到 container 上
○ --net=host(有這個設定就可以省略上一步)
● 直接抄答案:可以執行 firefox 的命令
● docker run -it -e DISPLAY -v $HOME/.Xauthority:/home/developer/.Xauthority
--net=host fatcloud/py27-cv24-gui-camera firefox
- 26. 執行要使用 webcam 的程式
● 直接講結論:只有被加到 video 這個 group 的使用者才有資格使用 camera
● the webcam howto
● 當然也要掛載好 device -v /dev
● 通常用 --privilege 就會掛上去了,不過根據實測 kinect 不行,一定要 -v /dev
● docker run -it -e DISPLAY -v $HOME/.Xauthority:/home/developer/.Xauthority
--net=host fatcloud/py27-cv24-gui-camera bash
● 執行 id 可以看到 video
- 27. 執行使用 GPU 的程式
● 結論:要安裝適合自己 GPU 的 driver
● 假設你的本機已經裝好了 driver 的話
○ 執行 glxinfo | grep "OpenGL version" 可以看到 NVIDIA 352.63 之類的字樣
○ 可能要先裝相關的程式庫 sudo apt-get install mesa-utils
● 在 container 內執行 sudo apt-get install nvida-352
● nvida-352 這裡要換成自己的 driver 版本
● 執行前給一個 --privilidge 設定
- 28. 小抄
能上 shadertoy 的 container
docker run -it -e DISPLAY -v $HOME/.Xauthority:/home/developer/.Xauthority --
net=host --privileged fatcloud/ar-sandbox firefox
只要每次都把這些參數加上去
我們就可以做出一個毫無安全性可言的 docker container 啦!