docker--安裝

什麼是docker

Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部項目,於 2013 年 3 月以 Apache 2.0 受權協議開源,主要項目代碼在 GitHub 上進行維護。linux

Docker 使用 Google 公司推出的 Go 語言 進行開發實現。web

docker是linux容器的一種封裝,提供簡單易用的容器使用接口。它是最流行的Linux容器解決方案。docker

docker的接口至關簡單,用戶能夠方便的建立、銷燬容器。數據庫

docker將應用程序與程序的依賴,打包在一個文件裏面。運行這個文件就會生成一個虛擬容器。centos

程序運行在虛擬容器裏,如同在真實物理機上運行同樣,有了docker,就不用擔憂環境問題了。安全

docker能夠用在web應用的發佈和打包,自動化測試和持續集成,發佈,在服務器環境中部署和調整數據庫或其餘應用服務器

爲何要使用docker

下圖是docker和虛擬機的對比網絡

 

 並且能解決環境配置的問題,架構

用上docker容器後,能夠實現開發、測試和生產環境的統一化和標準化。app

鏡像做爲標準的交付件,可在開發、測試和生產環境上以容器來運行,最終實現三套環境上的應用以及運行所依賴內容的徹底一致。

Linux容器不是模擬一個完整的操做系統,而是對進程進行隔離。在正常進程的外面套了一個保護層,對於容器裏面進程來講,它接觸的資源都是虛擬的,從而實現和底層系統的隔離。

(1)啓動快

容器裏面的應用,直接就是底層系統的一個進程,而不是虛擬機內部的進程。因此,啓動容器至關於啓動本機的一個進程,而不是啓動一個操做系統,速度就快不少。

(2)資源佔用少

容器只佔用須要的資源,不佔用那些沒有用到的資源;虛擬機因爲是完整的操做系統,不可避免要佔用全部資源。另外,多個容器能夠共享資源,虛擬機都是獨享資源。

(3)體積小

容器只要包含用到的組件便可,而虛擬機是整個操做系統的打包,因此容器文件比虛擬機文件要小不少。

總之,容器有點像輕量級的虛擬機,可以提供虛擬化的環境,可是成本開銷小得多。

 docker的優點

1.更高效的利用系統資源

因爲容器不須要進行硬件虛擬以及運行完整操做系統等額外開銷,Docker 對系統 資源的利用率更高。

不管是應用執行速度、內存損耗或者文件存儲速度,都要比傳 統虛擬機技術更高效。所以,相比虛擬機技術,一個相同配置的主機,每每能夠運 行更多數量的應用。

2.更快速的啓動時間

傳統的虛擬機技術啓動應用服務每每須要數分鐘,而 Docker 容器應用,因爲直接 運行於宿主內核,無需啓動完整的操做系統,所以能夠作到秒級、甚至毫秒級的啓 動時間。大大的節約了開發、測試、部署的時間。

3.一致的運行環境

開發過程當中一個常見的問題是環境一致性問題。因爲開發環境、測試環境、生產環 境不一致,致使有些 bug 並未在開發過程當中被發現。

而 Docker 的鏡像提供了除內 核外完整的運行時環境,確保了應用運行環境一致性,從而不會再出現 「這段代碼 在我機器上沒問題啊」 這類問題。

4.持續交付和部署

對開發和運維(DevOps)人員來講,最但願的就是一次建立或配置,能夠在任意 地方正常運行。

使用 Docker 能夠經過定製應用鏡像來實現持續集成、持續交付、部署。開發人員 能夠經過 Dockerfile 來進行鏡像構建,並結合 持續集成(Continuous Integration) 系 統進行集成測試,而運維人員則能夠直接在生產環境中快速部署該鏡像,甚至結合 持續部署(Continuous Delivery/Deployment) 系統進行自動部署。並且使用 Dockerfile 使鏡像構建透明化,不只僅開發團隊能夠理解應用運行環 境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。

5.更輕鬆的遷移

因爲 Docker 確保了執行環境的一致性,使得應用的遷移更加容易。Docker 能夠在 不少平臺上運行,不管是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運 行結果是一致的。所以用戶能夠很輕易的將在一個平臺上運行的應用,遷移到另外一 個平臺上,而不用擔憂運行環境的變化致使應用沒法正常運行的狀況。

 docker的三大概念

容器三大基本概念

鏡像 image

容器 container

倉庫 repository

docker整個生命週期就是這三個概念。

Docker鏡像就是一個只讀的模板。

例如:一個鏡像能夠包含一個完整的CentOS操做系統環境,裏面僅安裝了Apache或用戶須要的其餘應用程序。

鏡像能夠用來建立Docker容器。

Docker提供了一個很簡單的機制來建立鏡像或者更新現有的鏡像,用戶甚至能夠直接從其餘人那裏下載一個已經作好的鏡像來直接使用。

image的分層存儲:

由於鏡像包含完整的root文件系統,體積是很是龐大的,所以docker在設計時按照Union FS的技術,將其設計爲分層存儲的架構。

鏡像不是ISO那種完整的打包文件,鏡像只是一個虛擬的概念,他不是一個完整的文件,而是由一組文件組成,或者多組文件系統聯合組成。

docker容器(container)

image和container的關係,就像面向對象程序設計中的 類和實例同樣,鏡像是靜態的定義(class),容器是鏡像運行時的實體(object)。容器能夠被建立、啓動、中止、刪除、暫停,Docker利用容器來運行應用。

容器是從鏡像建立的運行實例。它能夠被啓動、開始、中止、刪除。每一個容器都是相互隔離的,保證安全的平臺。

能夠把容器看作是一個簡易版的Linux環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。

注意:鏡像是隻讀的,容器在啓動的時候建立一層可寫層做爲最上層。

docker倉庫(repository)

倉庫是集中存放鏡像文件的場所。有時候把倉庫和倉庫註冊服務器(Registry)混爲一談,並不嚴格區分。實際上,倉庫註冊服務器上每每存放着多個倉庫,每一個倉庫中又包含了多個鏡像,每一個鏡像有不一樣的標籤(tag)。

倉庫分爲公開倉庫(Public)和私有倉庫(Private)兩種形式。

最大的公開倉庫是Docker Hub,存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括Docker Pool等,能夠提供大陸用戶更穩定快讀的訪問。

當用戶建立了本身的鏡像以後就可使用push命令將它上傳到公有或者私有倉庫,這樣下載在另一臺機器上使用這個鏡像時候,只需須要從倉庫上pull下來就能夠了。

 docker Registry

Docker Registry 公開服務是開放給用戶使用、容許用戶管理鏡像的 Registry 服 務。通常這類公開服務容許用戶免費上傳、下載公開的鏡像,並可能提供收費服務 供用戶管理私有鏡像。

最常使用的 Registry 公開服務是官方的 Docker Hub,這也是默認的 Registry,並 擁有大量的高質量的官方鏡像。

除此之外,還有 CoreOS 的 Quay.io,CoreOS 相 關的鏡像存儲在這裏;Google 的 Google Container Registry,Kubernetes 的鏡像 使用的就是這個服務。
因爲某些緣由,在國內訪問這些服務可能會比較慢。
國內的一些雲服務商提供了針 對 Docker Hub 的鏡像服務(Registry Mirror),這些鏡像服務被稱爲加速器。常見 的有 阿里雲加速器、DaoCloud 加速器、靈雀雲加速器等。

使用加速器會直接從國內的地址下載 Docker Hub 的鏡像,比直接從官方網站下載速度會提升不少。在後 面的章節中會有進一步如何配置加速器的講解。

國內也有一些雲服務商提供相似於 Docker Hub 的公開服務。好比 時速雲鏡像倉 庫、網易雲鏡像服務、DaoCloud 鏡像市場、阿里雲鏡像庫等。

安裝docker

Docker 是一個開源的商業產品,有兩個版本:社區版(Community Edition,縮寫爲 CE)和企業版(Enterprise Edition,縮寫爲 EE)。

 官網安裝步驟:https://docs.docker.com/install/linux/docker-ce/centos/

# 1.卸載舊版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

# 2.設置存儲庫,分別執行下面兩條命令
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 3.安裝docker社區版
sudo yum install docker-ce
# 4.啓動關閉docker
systemctl start docker

 使用systemctl status docker查看狀態

 docker加速器

參考文檔:https://www.daocloud.io/mirror#accelerator-doc

#一條命令加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io

 查看版本

docker version 
相關文章
相關標籤/搜索