Docker (1) 基本概念和安裝

Docker簡介git

什麼是容器?github

  一種虛擬化的方案,操做系統級別的虛擬化。容器是一個輕量的、獨立的、可執行的包,包含了執行它所須要的全部東西:代碼、運行環境、系統工具、系統庫、設置。很長一段時間中,容器是專門用於Linux內核的,但微軟和Docker的密切合做將容器帶到了微軟平臺上,如今能夠再Linux、windows、Azure、Mac等等操做系統上使用。docker

 

虛擬機和容器的區別windows

  磁盤佔用空間更少(虛擬機除了應用的運行環境外,還須要安裝操做系統。幾個G,而容器只須要包含應用程序和它依賴的庫)api

  資源佔用減小(虛擬機須要模擬硬件的行爲,對內存和CPU的損耗特別大,一樣配置的服務器使用容器要比使用虛擬機服務更多的客戶)安全

  沒有docker前,容器技術很複雜,不容易安裝,也不容易管理實現自動化,而docker就是爲了改變些。服務器

 

什麼是Docker?網絡

   是一個由GO語言編寫的程序運行的「容器」,目前容器服務的基石是操做系統級別的隔離,在同一臺物理服務器上虛擬出多個主機。Docker則實現了一種應用程序級別的隔離,它改變咱們基本的開發、操做希望,由直接操做虛擬主機,轉換到操做程序運行的「容器」上來。架構

  Docker的英文本意是碼頭工人,也就是搬運工,這種搬運工搬運的十集裝箱(Container),集裝箱裏面裝的可不是商品貨物,而是任意類型的App,Docker把App裝在Container內,經過Linux Container技術的包裝將App變成一種標準化的、可移植的、自管理的組件,這種組件能夠再你的Laptop上開發、調試、運行,最終很是方便和一致地運行在生產環境下。Docker的核心底層技術是(Linux Container)LXC,Docker在其上面加了薄薄的一層,添加了許多有用的功能。socket

  Docker不只是歷史上最流行的開源項目之一,並且也從跟上上改變了人們構建應用程序的思惟方式,它能夠把程序集依賴的二進制文件、第三方庫等封裝在一塊兒,運行在任何安裝Docker Deamon的服務器上,它有望成爲將來軟件自動化部署的標準。

  

Docker的目標

  「Build, Ship And Run Any APP, Anywhere」 編譯,裝載任何APP,在任何地方均可以運行。

  大概就是一個容器,實現了對應用的封裝,部署,運行等聲明週期管理,只要在(go語言依賴的環境)glibc的環境下,導出均可以運行。

 

Docker與虛擬機的區別

可見每個虛擬機包括應用、必要的二進制文件和庫、完整的客戶端操做系統,大小總計十幾個GB。容器包括應用和應用的全部依賴,每一個容器都使用容器自身選擇的髮型版本,可是與其餘容器共享宿主操做系統的內核。在宿主操做系統的用戶空間內,他們以隔離的進程方式運行。另外,他們並不像客戶端操做系統正常運行那樣運行全部的進程。並且容器也補綁定任何特別的硬件基礎設施,Docker容器在任何計算機任何硬件基礎設施任何雲上均可以運行。

更重要的是,虛擬機須要耗時幾分鐘才能啓動,並且對資源敏感,而後容器只須要幾秒啓動,在資源較少負載過大時也能應付的了。因此,能夠再本地計算機運行不多的幾個虛擬機用於開發目的,可是能夠運行不少不少的容器。

 

Docker的使用場景

  1.使用Docker容器開發、測試、部署服務

  2.建立隔離的運行環境

  3.搭建測試環境

  4.構建多用戶的平臺即服務(PaaS)基礎設施

  5.提供軟件即服務(Saas)應用程序

  6.高性能、超大規模的宿主機部署

 

Docker的基本組成

Docker是C/S架構的程序, 由下面三部分組成:

  Docker Client 客戶端:Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通訊並將結果返回給用戶,Docker client也能夠經過socket或者RESTful api訪問遠程的Docker daemon(守護進程 服務端)

  Docker Daemon 守護進程:Docker 守護進程,也就是Server端,Server端能夠部署在本地,也能夠部署在遠程,由於Server端與客戶端是經過Rest Ful API進行通訊的。

  Docker Image 鏡像:鏡像是一個層疊的只讀文件,鏡像中包含有須要運行的文件。鏡像用來建立container,一個鏡像能夠運行多個container,鏡像能夠經過Dockerfile建立,也能夠從Docker hub/registry上下載。

  Docker Container 容器:容器是Dcoker的運行組件,啓動一個鏡像就是一個容器,容器是一個隔離環境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環境中。容器基於鏡像啓動和運行。

  Docker Registry 倉庫:共享和管理Docker鏡像,用戶能夠上傳或者下載上面的鏡像,官方地址爲:https://registry.hub.docker.com/ 也能夠搭建本身私有的Docker registry

 

 

Docker的優勢

  Docker提供了一種可移植的配置標準化機制,容許你一致性地在不一樣的機器上運行同一個Container,而LXC(Linux Container)自己可能由於不一樣機器的不一樣配置而沒法方便的移植運行。

    Docker以App爲中心,爲應用的部署作了不少優化,而LXC的幫助腳本主要是聚焦於如何使機器啓動地更快和小號更少的內存。

  Docker爲App提供了一種自動化構建機制(Dockerfile),包括打包,基礎設施管理和安裝等。

  Docker提供了一種相似git的Container版本化的機制,容許你對你建立過的容器進行版本管理,依靠這種機制,你還能夠下載別人的Container,甚至像git那樣合併。

  Docker Container 是可重用的,依賴於版本化機制,你很容易重用別人的Container,做爲基礎版本進行擴展

  Docker Container 是共享的,有點相似github同樣,Docker有本身的Index,你能夠建立本身的DOcker用戶並上傳和下載Docker Image

  Docker提供了不少的工具鏈,造成了一個生態系統,這些工具的目標是自動化、個性化和集成化,包括對PASS平臺的支持等。

  速度快:運行時的性能能夠獲取極大提高,管理操做(啓動、中止、開始、重啓等)都是以秒爲單位的,將應用和系統容器化,不添加額外的操做系統。

  敏捷:比VM小,比VM快,Docker容器的尺寸減少相比整個虛擬機大大簡化了分佈到於和仍與分發靈活。

  輕量:你會擁有足夠的操做系統,僅需添加或減少鏡像便可。在一臺服務器上能夠部署100~1000個Containers容器。

  便宜:開源的、免費的、低成本的。由現代Linux內核支持驅動,輕量的Container一定能夠再一個物理機上開啓更多容器,註定比VM要便宜。

 

Docker的安裝

官網地址:https://docs.docker.com/install/

首先要***,才能加載出google的驗證碼,註冊 登錄後 才能夠下載。

這裏是下的mac版的.安裝後登錄帳號就能夠了

打開終端輸入 docker --version 檢查是否安裝成功

docker --version 



Docker version 18.03.1-ce, build 9ee9f40

 

鏡像加速

鑑於國內網絡問題,後續拉取 Docker 鏡像十分緩慢,咱們能夠須要配置加速器來解決,我使用的是網易的鏡像地址:http://hub-mirror.c.163.com。

在任務欄點擊 Docker for mac 應用圖標 -> Perferences... -> Daemon -> Registry mirrors。在列表中填寫加速器地址便可。修改完成以後,點擊 Apply & Restart 按鈕,Docker 就會重啓並應用配置的鏡像地址了。

以後咱們能夠經過 docker info 來查看是否配置成功。

$ docker info
... Registry Mirrors: http://hub-mirror.c.163.com Live Restore Enabled: false
相關文章
相關標籤/搜索