前言
docker是一個開源的容器引擎,它的觀點就是服務器上安裝有不同的容器 容器內配備單獨的cpu和配置環境,當你需要這個環境的時候只需要單獨下載容器并且使用就可以了 而且你也可以配置自己的容器,這樣的辦法 方便了開發人員在更換辦公機器的時候為再次搭建復雜的開發環境省去了時間和麻煩,并且重啟容器的時間較快只需要一秒,詳細構造如下圖:
我們最初的模式是a1 服務器內存放著所有的應用 但是如果其中一個應用因為內存過滿導致應用崩潰那么服務器都跟著遭殃,所以需要做到應用資源獨立,這時用到了a2,一臺服務器上裝了不同的虛擬機 每個虛擬機分配了不同的內存和cpu ,這樣解決了應用資源獨立問題如果應用已崩潰了 并不會影響應用2的內容,但是虛擬機啟動過慢,并且如果遷移應用的時候需要從新配置虛擬機,這時候我們可以運用docker來實現第三種a3的方式,docker容器重啟時間很快當應用遷移的時候,只需要把裝了docker服務器鏡像下載加載進去 運行就可以了。
使用教程
這里我們以服務器是ubuntu系統為前提使用docker。
1
2
3
4
5
|
// 首先安裝docker sudo apt-get install docker.io // 安裝完成后我們輸入docker可查看詳細命令參數 |
docker info
命令可以幫我們查看docker的信息
接下來我們需要的是容器現在的docker只是一個空的docker。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 首先我們需要一個系統鏡像 用 docker pull 命令獲取系統鏡像 docker pull ubuntu:14.04 // images命令可以查看本機docker中存在哪些鏡像 docker images // 接下來我們運行鏡像 運行的鏡像就叫做容器 容器可讀可寫 用run命令 運行鏡像 docker run -it ubuntu:14.04 // 接下來我們就進入到了容器中 所有操作并不會影響原來的系統 exit 退出容器 |
接下來我們將自己創建好的容器轉化為鏡像方便日后開發
1
2
3
4
5
6
7
8
9
|
//ps 命令可以查看我們當前都運行了哪些容器 -a參數表示運行過哪些容器 docker ps -a //commit 命令用來將容器轉化為鏡像 -m 參數用來提交說明信息 -a指定用戶信息 長長的字母加數字表示容器的 id 最后指定目標鏡像的用戶名 倉庫名和tag信息 sudo docker commit -m "xxxx" -a "xxx" id 用戶名/倉庫名 tag信息 // 這時我們運行 docker images 就會發現我們剛剛轉化后的鏡像 用docker run -it 用戶名/倉庫名 tag信息 我們就能運行剛剛轉化后的容器 |
接下來我們需要把這個剛剛創建好的容器上傳到docker hub容器倉庫中方便以后重復使用或者被別人使用
1
2
3
4
5
6
7
8
9
10
11
|
// 首先登陸docker hub docker login // 然后我們以此輸入 用戶名 密碼和 郵箱 最后返回login success提示 // 運行push 命令即可上傳到docker hub中 docker push 用戶名/倉庫名 tag信息 // 然后你就可以在docker hub中看到你上傳的鏡像 |
dockerfile使用
案例:利用nginx創建一個網頁
首先我們新建一個 www 目錄 然后存放一個index.html文件 隨便寫一寫些內容
然后在www同級目錄下存放一個名為dockerfle的文件并書寫內容為
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from ubuntu:14.04 // 聲明構建鏡像 run apt-get update run apt-get install -y nginx copy . /www/user/share/nginx/html // 將當前系統文件拷貝到容器內目錄下 expose 80 // 聲明開放80端口 cmd [ "nginx" , "-g" , "daemon off;" ] // 表示運行容器的時候開啟nginx // 最后我們通過build來構建鏡像 運行 docker build -t= "用戶名/倉庫名 tag信息" |
此時我們運行 docker images
就會看到剛剛生成的鏡像,現在我們就可以運行剛剛的鏡像了,和前面運行稍有不同,此時我們需要對外指定80端口,該行為通過-p參數指定,運行
1
|
docker run -p 80:80 用戶名/倉庫名 tag信息 |
此時終端會卡 因為docker思想是每個容器最好只開一個線程做一件事 現在我們可以通過localhost 查看效果
總結
docker會讓我們的開發變得便捷,讓合作變得簡單,當然還有更多docker的命令文中沒有介紹,希望大家一起參考官方文檔去慢慢實踐練習,剛剛的例子如果不滿足只在本地訪問在我們沒有自己服務器的前提下 利用daocloud 就可只負責寫dockerfile 剩下的命令由daocloud完成。
官方傳送門:https://www.daocloud.io/
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:http://www.jianshu.com/p/86a55c829c94