CIO
|
PCDIY!
|
旗標圖書
|
旗景數位影像
|
讀者服務
首 頁
即時新聞
業界動態
最新活動
企業採購
精選文章
線上教學
品牌活動
程式碼下載
雲端運算智庫
最近新增的
精選文章
AP內建AI引擎 Mist Cloud平台分析能力強 Juniper Mist AI領先全球 改善WiFi穩定、效能首選
解決IT供應鏈攻擊
內部威脅的七個警訊
遠百以專案辦公室推動數位體驗
多廠牌與多重電信業者網路架構的挑戰與機會
德明科大啟用電貿暨AI實習基地 ViewSonic ViewBoard 智慧互動電子白板 扮要角
淺談計算誤差
秀傳醫療體系統 以Lenovo HyperConverged HX 超融合架構扎穩智慧醫療發展基礎
模組化設計 偵測率達99.99% 全面防杜惡意郵件入侵 首選Cellopoint Email UTM
滿足網路管理與檔案安全傳輸需求,Ipswitch的MOVEit及WhatsUp Gold一次完整提供
來自學界的資料分析利器 - Weka 與 R
北醫建置肺癌資料庫,透過深度標註訓練AI,協助醫師早期發現癌症
北榮AI門診上路!人工智慧判讀腦瘤,有效縮短醫師確診時間
台灣智慧機器人玩具聯盟攜手英閱音躍研創 推廣T. Robot程式教育,協助國中小學扎根培養運算思維
一場與時間賽跑的戰役 ,人工智慧加速心血管疾病診斷
最多人點閱的
精選文章
免費IT建置--Linux系統操作與管理
初探Hadoop開放原始碼平台環境
免費IT建置--網頁伺服器的完美組合LAMP(下)
免費IT建置--檔案共享與檔案伺服器
Linux下的防火牆(基礎篇)
Linux下的防火牆(進階篇)
N.Y.BAGELS CAFE善用SAP Business One
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 影片播放器範例
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 線上查詢匯率
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 擲骰子遊戲
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 音樂播放器範例
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 來電黑名單
免費IT建置--網頁伺服器的完美組合LAMP(上)
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ 繪圖板範例
手機程式設計入門與應用 Android、iPhone、Windows Mobile─ Matrix應用範例
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
Docker介紹與入門使用
文‧圖/張乃中
2016/10/20 下午 06:04:22
在開發軟體時,時常會需要某些運行環境來協助開發測試,以往利用虛擬化技術建立一個包含作業系統在內的獨立執行環境(虛擬機器),例如VMware。然而建立虛擬機器會消耗掉不少的系統資源,因此就產生另一種輕量化的虛擬化技術:容器(Container),容器是利用Linux核心的Control Group和Namespaces機制,建立獨立隔離的工作區,容器間共享主機的資源,必要時也能增加使用條件或限制。
Docker簡介
Docker 是一個開源專案,基於容器技術,對其進一步的封裝,讓使用者更容易操作、快速建立Container、搭建一個開發環境、部署程式碼進行測試。Docker 提供應用程式在獨立的 container 中執行,透過 Docker Engine 來進行管理。
Docker包含了三個主要部份
Docker映像檔(Image)
Docker映像檔是一個唯讀的環境模板,裡面包含了Container內的所有程式(包括應用程式、相關函式庫、設定檔),用來建立Docker容器。舉例來說,一個網頁的執行環境映像檔內會有ubuntu OS、Apache網站伺服器、MySQL資料庫等。
Docker容器(Containers)
容器是根據映像檔建立的實例(instance)。映像檔是唯讀的,而容器則是是映像檔的可寫層。容器是一個簡易版的 Linux 環境應用程式並可在其中運行程式。一個映像檔可以建立多個容器,每個容器都是相互隔離的。
Docker註冊伺服器(Registries)
Docker註冊伺服器上有許多倉庫(repository),倉庫內存放許多映像檔供人使用。註冊伺服器分為公開(Public)和私有(Private),最大的Public registries是 Docker Hub,存放了大量的映像檔供使用者下載使用;使用者也可以在local網路上建立一個Private registries。
Docker是以原生的Linux為基礎開發的,所以在大部份的Linux系統上都可以使用,而目前常見的作業系統 Windows、OS X仍然需要先安裝Linux的VM或者使用Docker官方提供的boot2docker套件(含VM環境)。以下介紹使用Ubuntu 14.04版本。
安裝
Ubuntu 14.04 版本套件庫中已經內建了 Docker ,直接安裝即可。
$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo ln –sf /usr/bin/docker.io /usr/local/bin/docker
快速安裝
$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh
如果沒有錯誤訊息,安裝結束後,可以輸入
$ sudo docker version
來檢查版本資訊,以及
$ sudo docker info
列出目前的系統資訊,包含CPU數量,記憶體大小以及目前有的docker映像檔數等。試試看建立一個容器並輸出Hello World。
$ docker run hello-world
執行結果
Docker的運作流程如下圖Docker 在執行容器前需要有對應的映像檔,如果映像檔不存在local端,則Docker 會從Registries下載(預設是 Docker Hub,也可以指定其他公用或私有registry)。
映像檔
Docker 在執行容器前需要有對應的映像檔,如果映像檔不存在local端,則Docker 會從Registries下載(預設是 Docker Hub,也可以指定其他公用或私有registry)。使用docker pull命令從倉庫取得所需要的映像檔。
例如從Docker Hub 倉庫下載一個 Ubuntu 12.04
$ sudo docker pull ubuntu:12.04
Pulling repository ubuntu
ab8e2728644c: Pulling dependent layers
511136ea3c5a: Download complete
5f0ffaa9455e: Download complete
a300658979be: Download complete
904483ae0c30: Download complete
ffdaafd1ca50: Download complete
d047ae21eeaf: Download complete
可以使用docker imges命令顯示本機上已經存在的映像檔。
容器
當取得映像檔後,可以根據映像檔建立一個新容器並啟動。使用docker run來建立一個容器並啟動執行,如上面的hello world範例。當容器建立並啟動之後,會執行使用者所指定的程式,執行完畢之後容器被終止。除了docker run外,也可以利用docker create指令建立初始狀態為終止的容器。
$ sudo docker create –it ubuntu:14.04
每個容器都有唯一的一個id作為識別,可以使用docker ps –a來顯示目前系統中的所有容器。
$ docker ps –a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
592376ff3eb8 hello-world "/hello" 25 seconds ago Exited (0) 24 seconds ago prickly_wozniak
利用ID以及 docker start命令,將一個終止的容器重新啟動執行。
$ sudo docker start -i 592376ff3eb8
而執行中的容器可以透過 docker stop指令來終止,或者利用docker restart指令將執行中的容器終止後重啟。
$ sudo docker stop 592376ff3eb8
如果要匯出本機上的容器可以使用 docker export匯出。
$ sudo docker export 592376ff3eb8 > helloworld.tar
或是用docker import匯入容器將其變為映像檔
$ cat test.tar | sudo docker export - test/ubuntu:v1.0
用images檢視匯入結果
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
以上便是一些關於Docker基本的操作。
結論
許多大企業Google、Amazon等也都已經使用Docker來提供一些服務,Docker的輕量化及快速部屬,對於目前雲端開發或者提供雲端服務等都有非常大的幫助。(作者張乃中
目前服務於凌羣電腦電信研發處)
參考資料
[1]Docker
https://www.docker.com/
[2]Docker —— 從入門到實踐https://www.gitbook.com/book/philipzheng/docker_practice/details
[3]全面易懂的Docker指令大全
https://www.gitbook.com/book/joshhu/dockercommands/details
[4] SUPERCHARGE YOUR DEVELOPMENT ENVIRONMENT (USING DOCKER)
https://denibertovic.com/talks/supercharge-development-env-using-docker/#/
回首頁...
關於RUN!PC
|
廣告刊登
|
聯絡我們
|
讀者服務
|
雜誌訂閱
|
出刊&補寄時間
-- Copyright© FLAG INFORMATION CO., LTD. 旗訊科技(股)公司. All rights reserved. 本站圖文著作權所有 未經授權 不得任意轉載使用 --
-- 請使用1024*768螢幕解析度,IE 7.0或firefox 3.0以上瀏覽器,以達到最佳閱讀效果--