1. 程式人生 > >Docker應用容器引擎介紹與搭建

Docker應用容器引擎介紹與搭建

Docker相信大家都不預設,沒有實踐過的童鞋也應該聽過他的大名,筆者最近挺長一段使用都在使用Docker解決各種問題,而在最近也吧Kubernetes的坑爬完實踐了起來,那麼從今天開始筆者會帶來關於Docker容器化相關的博文,一同探索Docker為什麼這麼火熱,我們怎麼去實踐使用它.

附上:

1. 為什麼Docker會火

  • 截止到現在Docker在github上的star數有48570
  • 阿里雲,騰訊雲,AWS,都推出了自己的Docker平臺
  • 70%的調查企業已經正在使用或考慮使用Docker;

大家回顧以往的經理往往比較火的軟體系統(比如Hadoop)都是解決了一個領域上痛點,Docker也不例外,就筆者總結有如下痛點是Docker解決的:

  • 複雜的環境搭建
    筆者之前安裝一個軟體可能有各種依賴關係極為複雜(比如:APPRTC),Docker可以吧環境依賴打包在一起只需要一條命令就可以開箱使用
  • 隔離性 - 每個使用者例項之間相互隔離, 互不影響。
    比如你的程式A需要使用PHP7.0,程式B需要使用PHP7.2,但是程式A不能使用PHP7.2,在虛擬的時候你只能選擇開兩臺,使用docker就可以在同一臺伺服器互不影響的情況下順利執行
  • 可配額/可度量 - 每個使用者例項可以按需提供其計算資源,所使用的資源可以被計量。
    筆者在運營環境出過一次事故,大致是A應用除了點問題導致CPU吃高,其他程式全部都無法訪問,有的docker可以定額分配資源限制不重要的程式不會影響到重要的程式
  • 移動性 - 使用者的例項可以很方便地複製、移動和重建以及回滾。
  • 基本不增加額外的效能消耗
    Docker直接移植於Linux核心之上,通過執行Linux程序將底層裝置虛擬隔離,這樣系統性能的損耗也要比虛擬機器低的多,幾乎可以忽略。同時,Docker應用容器的啟停非常高效,可以支援大規模的分佈系統的水平擴充套件,真正給企業開發帶來福音。
  • DevOps持續迭代交付
    Docker技術將應用以集裝箱的方式打包交付,使應用在不同的團隊中共享,通過映象的方式應用可以部署於任何環境中。這樣避免了各團隊之間的協作問題的出現,成為企業實現DevOps目標的重要工具。以容器方式交付的Docker技術支援不斷地開發迭代,大大提升了產品開發和交付速度。

正如中國惠普雲端計算整合雲技術首席專家劉豔凱所說的那樣:“任何一項技術的發展和它受到的追捧,都是因為它能夠解決困擾人們的問題”,Docker就是用來解決這個問題的

2. 搭建安裝

這裡選擇使用Centos來安裝Docker

  1. 安裝所需的包。yum-utils提供了yum-config-manager 效用,並device-mapper-persistent-data和lvm2由需要 devicemapper儲存驅動程式。
> yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 使用以下命令設定release儲存庫。即使您想從edge和test儲存庫安裝構建,也總是需要release儲存庫。
> yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 可選:啟用edge和test儲存庫。這些儲存庫包含在docker.repo上面的檔案中,但預設情況下處於禁用狀態。您可以將它們與穩定的儲存庫一起啟用
> yum-config-manager --enable docker-ce-edge
> yum-config-manager --enable docker-ce-test

您可以通過使用該標誌執行命令來禁用edge和test儲存庫 。

> yum-config-manager --disable docker-ce-edge

安裝Docker CE

通過以下命令可以直接安裝最新版本的Docker-ce

> yum install docker-ce

如果啟用了多個Yum儲存庫,則安裝或更新時未指定版本yum install或 yum update命令始終會安裝儘可能高的版本,這可能不適合您的穩定性需求。

在生產系統上,您應該安裝特定版本的Docker CE,而不是始終使用最新版本。列出可用的版本。

此示例使用該sort -r命令按版本號對結果進行排序,從最高到最低。

> yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64            18.02.0.ce-1.el7.centos             docker-ce-edge  
docker-ce.x86_64            18.01.0.ce-1.el7.centos             docker-ce-edge  
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-edge  
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-edge  
docker-ce.x86_64            17.11.0.ce-1.el7.centos             docker-ce-edge  
docker-ce.x86_64            17.10.0.ce-1.el7.centos             docker-ce-edge  

列表的內容取決於啟用了哪些儲存庫,並且特定於您的CentOS .el7版本(在此示例中,由版本的字尾指示)。選擇一個特定的版本進行安裝。第二列是版本字串。您可以使用整個版本字串。第三列是儲存庫名稱,它指示軟體包來自哪個儲存庫。要安裝特定版本,請將版本字串附加到包名稱並用連字元(-)分隔。

注意:版本字串是軟體包名稱加上第一個連字元的版本。在上面的例子中,完全的包名是docker-ce-17.03.0.ce

為了後面可是搭建Kubernetes可以參考個更新日誌裡面的描述

Kubernetes 1.8  <--Docker 1.11.2 to 1.13.1 and 17.03.2

這裡選擇Rancher認證過的17.03.2並且K8S支援版本

# 先安裝docker-ce-selinux-17.03.2.ce,否則安裝docker-ce會報錯
> yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm 
> yum install docker-ce-17.03.2.ce

啟動Docker並且設定開機自啟。

> systemctl start docker
> systemctl enable docker

docker通過執行hello-world 映像驗證安裝是否正確。

> docker run hello-world
# 如下輸出證明已經完成了Docker環境的搭建
Hello from Docker!

3 總結

第一步已經完成已經可以使用Docker環境了,下一步我們需要熟悉Docker相關的一些命令

注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!