最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2016年5月28日 星期六

在Windows上操作Docker建立Container

近期在研究Docker,何謂Docker? 可參考 為什麼要使用 Docker?
關於Docker與VM的差異,各位可以上Google查詢,這裡就簡單介紹Docker操作過程作紀錄。
這裡介紹在Windows上安裝Docker並建立Container,可能你會問為什麼不在Linux上操作,卻要在Windows上操作呢?簡單的幾點原因
1.網路上大多是Linux的介紹很少Windows。
2.在Windows上操作順手。
3.在Windows有很多在Linux不會遇到的問題,具挑戰性(攻城師的個性)。

至 boot2docker/windows-installer 下載  Docker-install.exe 安裝Docker,安裝後桌面將有下圖兩個捷徑。

PS:將Docker安裝在Windows上有幾點須特別注意。
1. 最好安裝在Windows7以上的版本。
2. 64位元的環境。
3. 系統的模擬狀態要設為開啟。
相關內容可參考官網介紹

Windows8.1如圖

點選桌面的 Boot2Docker Start 捷徑,開始執行Docker第一次啟動的初始化。


接著就可以開始Docker操作。

1. 建立Container。
docker run -idt ubuntu bash

2. 查看Image與Container資料。
docker images
docker ps -a

3. 列出 Image ID 與 Container ID。
docker ps -aq
docker images -aq

4. 刪除Image。
docker rm 7bd023c8937d
出現以下訊息時,表示該Image有Container在使用。
Error reponse from daemon: Conflict, cannot delete 7bd023c8937d because the running container eb4edf21f992 is using it, stop it and use -f to force
Error: failed to remove images: [7bd023c8937d]
須將使用移除後,Image才能被刪除,步驟如下。
(1)列出目前在使用的Container id。
docker ps -l

(2) 停止Container id使用權。
docker stop eb4edf21f992
(3) 移除Container id。
docker rm eb4edf21f992
(4) 移除Image。
docker rmi 7bd023c8937d

5. 官網下載Image。
(1)下載含有mono功能的Image。
Docker Hub官網中,存放著來自世界各地個網友們自己自做的Image供人下載使用,當然你可以自行做一個Image上傳提供別人使用。

假設我們想要找一個Image含有mono,可在網頁右上角的搜尋欄位中輸入"mono",這樣就會列出目前含有mono的Image。

或是在Docker命令視窗中輸入以下指令也可找出含有"mono"功能的Image。
docker search mono

如果要使用含有mono Image來做container需使用以下指令。
docker run -i -d -t mono bash

執行後再查看Image資訊。
docker images
docker ps -a

(2)下載含有Apache、php功能的Image。
docker run -d -p 8081:80 --name=apache-php -v //c/Uesrs/Amin/www:/var/www/html chriswayg/apache-php


指令解說
Docker run:執行 Docker
-d:啟動一個Daemon在後台執行。
-p:注意是小寫的p,設定主機外部Port對應至內部Container內的Port。
-v:掛載外部資料夾至Container內部資料夾的通道。
chriswayg/apache-php:為Docker Hub上提供含有Apache-php的名稱,連結

指令重點如下
 -p 8081:80: 表示當瀏覽器輸入 http://Docker_HOST:8081,瀏覽器將會自動連結到Container的80Port。
 -v //c/Uesrs/Amin/www:/var/www/html:表示將Container內的/var/www/html資料夾路徑與外部 C:/Uesrs/Amin/www資料夾路徑相連,這樣可讓外部的檔案可直接與Container內部進行共同存取。

Docker_HOST如圖中的tcp://192.168.59.103:2376的192.168.59.103。

在C:/Uesrs/Amin/www存放一個內容如下的 index.php。
 <?php phpinfo(); ?>
開啟瀏覽器輸入http://192.168.59.103:8081後即可見到如下畫面,表示外部資料路徑成功掛載至Container內部。

6. 進入Container
docker exec -it amin bash

7. 複製檔案
(1) 從主機到Container
docker cp Test.txt amin:/


(2) 從Container到主機
docker cp amin:/aaa aaa


8. 監控Container使用的系統資源
docker stats $(docker ps | awk '{if(NR>1) print $NF}')
or
docker stats $(docker ps --format '{{.Names}}')


參考資料: