Docker本身是一個容器運行載體或稱之爲管理引擎,基於Go語言開發的。我們把應用程序和配置依賴打包好,形成一個可交付的運行環境,這個打包好的運行環境,就是image鏡像文件。只有通過這個鏡像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker根據image文件生成容器實例,同一個鏡像文件,可以生成多個同時運行的容器實例。
Docker的三要素:鏡像image,容器container,倉庫repository
概念 | 說明 |
---|---|
Docker 鏡像(Images) |
Docker 鏡像是用於創建 Docker 容器的模板,比如 Ubuntu 系統。 |
Docker 容器(Container) |
容器是獨立運行的一個或一組應用,是鏡像運行時的實體。 |
Docker 客戶端(Client) |
Docker 客戶端通過命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 與 Docker 的守護進程通信。 |
Docker 主機(Host) |
一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。 |
Docker Registry |
Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。 Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。 一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標籤(Tag);每個標籤對應一個鏡像。 通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標籤就常用於對應該軟件的各個版本。我們可以通過 <倉庫名>:<標籤> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標籤,將以 latest 作爲默認標籤。 |
Docker Machine |
Docker Machine是一個簡化Docker安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
image文件生成的容器實例,本身也是一個文件,稱之爲鏡像文件。
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。
一個容器運行一種服務,當我們需要的時候,就可以通過docker客戶端創建一個對應的運行實例,也就是我們的容器。鏡像就是Java裏的類,而容器就是類的實例化對象,每個容器就是每個實例。
至於倉庫,就是放着很多鏡像的地方,類似maven的倉庫,我們可以把鏡像發佈到倉庫中,需要的時候,從倉庫里拉下來就可以了。
Docker利用容器獨立運行一個或者一組應用,容器是用鏡像創建的運行實例。它可以被啓動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。Docker可以讓開發者打包他們的應用以及應用的runtime環境,這個包很輕量級、可移植,發佈到任何Linux機器上,也可以實現虛擬化。
容器其實就是一個精簡版的Linux環境(包括root用戶權限,進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。
容器的定義和鏡像幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的。
Docker安裝要求:Centos的安裝,支持centos7(64bit)或者 centos 6.5(64bit)或更高版本。
Docker的應用場景:
1.web應用自動化打包和發佈
2.自動化測試和持續集成、發佈
3.在服務型環境中部署和調整數據庫或者其他後臺應用
docker的鏡像都放到docker hub上面,也就是https://hub.docker.com,但是這個是國外的網站,訪問速度很慢。國內就有一些廠商做了鏡像加速,比較阿里雲鏡像加速、網易雲加速等,他們把dockerhub上的鏡像,克隆了一份放到自己的雲上。這樣國內,訪問下載鏡像速度就比較快了。
所以,一般要先配置下鏡像加速配置,可以使用阿里雲鏡像加速或者網易雲鏡像加速。
1.登錄阿里雲,開通容器鏡像服務https://cr.console.aliyun.com/cn-hangzhou/instances/
這裏可以看到鏡像加速器地址,已經對應的操作系統的配置說明
2.設置鏡像加速地址,就是相當於配置鏡像下載的倉庫私服地址
我的Linux發行版本是Centos7(如果是其他發行版本,配置有所不同,請自行百度),編輯/etc/docker/daemon.json
把registry-mirrors,添加到json字符串裏
3.重載配置並重啓docker
systemctl daemon-reload
systemctl restart docker
4.來看看我們的helloworld實例,helloworld是docker提供的一個demo
5.運行hello-world鏡像 :docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
輸出以上這段日誌以後,測試成功,hello-world容器就會自動停止。
我們發現hello-world已經被下載下來了
docker run的運行流程