1. 程式人生 > >Docker核心技術(一)

Docker核心技術(一)

Docker核心技術

1.Docker的簡介

1)前提知識和課程定位

  1. 熟練掌握Linux的基本命令和相關背景知識
  2. Maven以及Git的相關知識

2)什麼是Docker

  • 問題:為什麼會有Docker的出現?
    一款產品從開發到上線,從作業系統,到執行環境,再到應用配置。作為開發+運維之間的協作我們需要關心很多東西,這也是很多網際網路公司都不得不面對的問題,特別是各種版本的迭代之後,不同版本環境的相容,對運維人員都是一個考驗。
    Docker之所以發展如此的迅速,也是因為它對此給出了一個標準化的解決方案。
    環境配置如此的麻煩,換一臺機器,就要重新來一次,費力費時,很多人想到,能不能從根本上解決問題。軟體可以帶上環境安裝?也就是說,在安裝的時候,把原始環境一模一樣地複製過來。開發人員利用Docker可以消除協作編碼時“在我的機器上可以正常的工作”的問題。
    在這裡插入圖片描述

    之前在伺服器配置一個應用的執行環境,要安裝各種軟體,如JDK,Tomcat,MySQL,JDBC驅動包等 。安裝和配置這些東西有多麻煩就不說了,它還不能跨平臺,假如我們是在Windows上安裝這些環境,到了Linux又到重新安裝,況且就算不能跨作業系統,換了一臺同樣作業系統的伺服器,要移植應用也是非常的麻煩。

    傳統上認為,軟體編碼開發/測試結束之後,所產生的成果即是程式或是能夠執行的二進位制位元組碼等(java為例)。而為了讓這些程式可以順利執行,開發團隊也準備了完整的部署檔案,讓運維團隊也得以部署應用程式,開發需要清楚的告訴運維團隊,用的全部配置檔案+所有的軟體環境。不過,即遍如此,仍然常常會有部署失敗的狀況。Docker映象的設計,使得Docker得以打破過去(程式即應用)的觀念。透過映象(images)將作業系統核心除外,運作應用程式做需要的系統環境,由下而上打包,達到應用程式跨平臺間的無縫接軌運作。

  • Docker的理念
    Docker是基於Go語言實現的雲開源專案。
    Docker的主要目標是“Build,Ship and Run Any App,Anywhere”,也就是通過對應用組建的封裝,分發,部署,執行等生命週期的管理,使用使用者的App(可以是一個WEB應用或者是一個數據庫應用)及其執行環境能夠做到“一次封裝,到處執行”。
    在這裡插入圖片描述
    Linux容器技術的出現就解決了這樣的一個問題,而Docker就是在它的基礎上發展過來的,將應用執行在Docker容器上面,而Docker容器在任何作業系統上都是一致的,這就實現了跨平臺、跨伺服器。只需要一次配置好環境,換到別的機子上就可以一鍵部署好,大大簡化了操作。
    Docker的中文官方文件

  • 一句話總結:
    解決了執行環境和配置問題的軟體容器,方便做持續整合並有助於整體釋出的容器虛擬化技術。

3)Docker能幹什麼?

(1)之前的虛擬機器技術

在這裡插入圖片描述
虛擬機器的缺點:

  1. 資源佔用多
  2. 步驟多
  3. 啟動慢

(2)容器虛擬化技術

在這裡插入圖片描述
比較Docker和傳統的虛擬化方式的不同之處:
在這裡插入圖片描述

(3)開發/運維(DevOps)

一次構建,隨處執行!

  1. 更快速的應用交付和部署
  2. 更便捷的升級和擴縮容
  3. 更簡單的系統運維
  4. 更高效的計算資源利用

(4)企業級

包括新浪,美團,蘑菇街等等都在用

  1. 新浪:
    在這裡插入圖片描述
    在這裡插入圖片描述
  2. 美團:
    在這裡插入圖片描述
  3. 蘑菇街
    在這裡插入圖片描述

4)去哪下?

  1. 官網
    Docker官網
    Docker中文網站
  2. 倉庫
    Docker Hub官網

Docker的安裝

前提說明

CentOS Docker安裝

Docker支援以下的CentOS版本:

  1. CentOS 7(64-bit)
  2. CentOS 6.5(64-bit)或更高的版本

前提條件

目前,CentOS僅發行版本中的核心支援Docker。
Docker執行在CentOS7上,要求系統為64位、系統的核心版本要在3.10以上。
Docker執行在CentOS-6.5或更高的版本的CentOS,要求系統為64位、系統的核心版本為2.6.32-431或者是更高的版本。

檢視自己的核心

uname命令使用者列印當前系統相關資訊(核心版本號,硬體架構,主機名稱和作業系統型別等)
在這裡插入圖片描述
在這裡插入圖片描述
或者是這個:
在這裡插入圖片描述


下面是我自己的Linux系統的核心資訊:
在這裡插入圖片描述
這個是我的Linux的版本資訊:
在這裡插入圖片描述
這個是系統版本:
在這裡插入圖片描述

Docker的基本組成

Docker的技術架構圖:
在這裡插入圖片描述
Docker的基本組成:

  1. 映象(image)
    在這裡插入圖片描述
  2. 容器(container)
    在這裡插入圖片描述
  3. 倉庫(repository)
    在這裡插入圖片描述

總結
在這裡插入圖片描述

Docker的安裝步驟

1)CentOS6.8的Docker的安裝

在這裡插入圖片描述

  • 安裝EPEL庫:
    在這裡插入圖片描述
  • 正式安裝
    在這裡插入圖片描述
  • Docker的配置檔案
    在這裡插入圖片描述
  • 啟動Docker的後臺服務
    在這裡插入圖片描述
  • 驗證:
    在這裡插入圖片描述

2)CentOS7安裝Docker

可以參考下面的這個網站,這個網站有時候會進不去:
在這裡插入圖片描述
也可以參考這個中文版的CentOS7的安裝文件
中文版的CentOS7的安裝文件

  1. 第一步:解除安裝之前的版本:
$ sudo yum remove docker \
                  docker-common \
                  docker-selinux \
                  docker-engine
  1. 安裝:
    安裝 Docker CE
    您可以通過不同方式安裝 Docker CE,具體取決於您的需求:

    • 大多數使用者設定 Docker 的映象倉庫並從中進行安裝,從而可以輕鬆完成安裝和升級任務。這是推薦方法。

    • 一些使用者下載 RPM 軟體包並手動進行安裝,然後完全由手動管理升級。在某些情況(例如,在不能訪問網際網路的隔離系統中安裝 Docker)下,這很有用。

1)使用映象倉庫進行安裝

首次在新的主機上安裝 Docker CE 之前,您需要設定 Docker 映象倉庫。然後,您可以從此映象倉庫安裝和更新 Docker。

設定映象倉庫

  1. 安裝所需的軟體包。yum-utils 提供了 yum-config-manager 實用程式,並且 devicemapper 儲存驅動需要 device-mapper-persistent-data 和 lvm2。

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

  1. 使用下列命令設定 stable 映象倉庫。您始終需要使用 stable 映象倉庫,即使您還需要通過 edge 或 testing 映象倉庫安裝構建也是如此。

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

  1. 可選:啟用 edge 和 testing 映象倉庫。這些映象倉庫包含在上述 docker.repo 檔案中,但預設情況下處於禁用狀態。您可以將它們與 stable 映象倉庫一起啟用。

$ sudo yum-config-manager --enable docker-ce-edge

$ sudo yum-config-manager --enable docker-ce-testing

您可以通過執行帶有 --disable 標誌的 yum-config-manager 命令來禁用 edge 或 testing 映象倉庫。如需將其重新啟用,請使用 --enable 標誌。以下命令用於禁用 edge 映象倉庫。

安裝 DOCKER CE

  1. 更新 yum 軟體包索引

$ sudo yum makecache fast

如果這是自新增 Docker 映象倉庫以來您首次重新整理軟體包索引,系統將提示您接受 GPG 金鑰,並且將顯示此金鑰的指紋。驗證指紋是否正確,並且在正確的情況下接受此金鑰。指紋應匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。

  1. 安裝最新版本的 Docker CE,或者轉至下一步以安裝特定版本。

$ sudo yum install docker-ce

警告:如果您啟用了多個 Docker 映象倉庫,進行安裝 或者更新而不在 yum install 或 yum update 命令中指定版本將始終安裝可用的最高版本, 這可能無法滿足您的穩定性需求。

  1. 在生產系統中,您應該安裝特定版本的 Docker CE,而不是始終使用最新版本。列出可用版本。此示例使用 sort -r 命令按版本號(從最高到最低)對結果進行排序,並且已被截斷。

:此 yum list 命令僅顯示二進位制軟體包。如果還需要顯示 源軟體包,請從軟體包名稱中省略 .x86_64。

$ yum list docker-ce.x86_64 --showduplicates | sort -r
docker-ce.x86_64 17.06.0.el7 docker-ce-stable

此列表的內容取決於啟用了哪些映象倉庫,並且將特定於您的 CentOS 版本(在本示例中,由版本中的 .el7 字尾表示)。選擇一個特定版本進行安裝。第二列為版本字串。第三列為映象倉庫名稱,它表示軟體包來自哪個映象倉庫並按擴充套件其穩定性級別列出。如需安裝特定版本,請將版本字串附加到軟體包名稱,並使用連字元 (-) 分隔它們:

$ sudo yum install docker-ce-

  1. 啟動 Docker。

$ sudo systemctl start docker

  1. 驗證是否正確安裝了 docker,方法是執行 hello-world 映象。

$ sudo docker run hello-world

此命令將下載一個測試映象並在容器中執行它。容器執行時,它將輸出一條參考訊息並退出。

2)從軟體包進行安裝

使用從軟體包進行安裝可以參考文件;


這個時候,就已經安裝成功了:
在這裡插入圖片描述

HelloWrold

從倉庫裡面抓取一個映象到本地,以映象為模板,執行一個容器例項;

阿里雲映象加速

  1. 是什麼
  2. 註冊一個屬於自己的阿里雲賬號(可複用淘寶賬號)
  3. 獲取加速器地址連結
  • 登入阿里雲開發者平臺
  • 獲取加速器地址
    在這裡插入圖片描述
  1. 配置本機的Docker執行映象加速器
  • 這個是CentOS6.8的配置:
    在這裡插入圖片描述
  • 這個是CentOS7的配置:
    在這裡插入圖片描述
  1. 重新啟動Docker後臺服務:service docker restart
  2. Linux系統下配置完加速器需要檢查是否生效
    在這裡插入圖片描述

我的阿里映象加速器沒有配置成功,之後,再來配置;—鬱悶
跟預期有些差距:
在這裡插入圖片描述
這個我的,配置阿里映象沒有成功:
在這裡插入圖片描述


網易雲映象加速

在這裡插入圖片描述

HelloWorld

docker run hello-world
在這裡插入圖片描述


在這裡插入圖片描述

Docker的底層執行原理

Docker是怎麼工作的?

在這裡插入圖片描述
在這裡插入圖片描述

為什麼Docker比VM要快?-面試常問

在這裡插入圖片描述