關於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}}')
參考資料:
- Container指令基礎
- Docker 學習筆記 - Hello Dockerfile
- 如何在Ubuntu 15.04上安裝spotify
- 比較 save, export 對於映象檔操作差異
- Right-sizing with Docker Stats and cAdvisor