Docker核心技術(一)
Docker核心技術
1.Docker的簡介
1)前提知識和課程定位
- 熟練掌握Linux的基本命令和相關背景知識
- 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)之前的虛擬機器技術
虛擬機器的缺點:
- 資源佔用多
- 步驟多
- 啟動慢
(2)容器虛擬化技術
比較Docker和傳統的虛擬化方式的不同之處:
(3)開發/運維(DevOps)
一次構建,隨處執行!
- 更快速的應用交付和部署
- 更便捷的升級和擴縮容
- 更簡單的系統運維
- 更高效的計算資源利用
(4)企業級
包括新浪,美團,蘑菇街等等都在用
- 新浪:
- 美團:
- 蘑菇街
4)去哪下?
- 官網
Docker官網
Docker中文網站 - 倉庫
Docker Hub官網
Docker的安裝
前提說明
CentOS Docker安裝
Docker支援以下的CentOS版本:
- CentOS 7(64-bit)
- 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的基本組成:
- 映象(image)
- 容器(container)
- 倉庫(repository)
總結:
Docker的安裝步驟
1)CentOS6.8的Docker的安裝
- 安裝EPEL庫:
- 正式安裝
- Docker的配置檔案
- 啟動Docker的後臺服務
- 驗證:
2)CentOS7安裝Docker
可以參考下面的這個網站,這個網站有時候會進不去:
也可以參考這個中文版的CentOS7的安裝文件
中文版的CentOS7的安裝文件
- 第一步:解除安裝之前的版本:
$ sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine
-
安裝:
安裝 Docker CE
您可以通過不同方式安裝 Docker CE,具體取決於您的需求:-
大多數使用者設定 Docker 的映象倉庫並從中進行安裝,從而可以輕鬆完成安裝和升級任務。這是推薦方法。
-
一些使用者下載 RPM 軟體包並手動進行安裝,然後完全由手動管理升級。在某些情況(例如,在不能訪問網際網路的隔離系統中安裝 Docker)下,這很有用。
-
1)使用映象倉庫進行安裝
首次在新的主機上安裝 Docker CE 之前,您需要設定 Docker 映象倉庫。然後,您可以從此映象倉庫安裝和更新 Docker。
設定映象倉庫
- 安裝所需的軟體包。yum-utils 提供了 yum-config-manager 實用程式,並且 devicemapper 儲存驅動需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 使用下列命令設定 stable 映象倉庫。您始終需要使用 stable 映象倉庫,即使您還需要通過 edge 或 testing 映象倉庫安裝構建也是如此。
$ sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo
- 可選:啟用 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
- 更新 yum 軟體包索引
$ sudo yum makecache fast
如果這是自新增 Docker 映象倉庫以來您首次重新整理軟體包索引,系統將提示您接受 GPG 金鑰,並且將顯示此金鑰的指紋。驗證指紋是否正確,並且在正確的情況下接受此金鑰。指紋應匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。
- 安裝最新版本的 Docker CE,或者轉至下一步以安裝特定版本。
$ sudo yum install docker-ce
警告:如果您啟用了多個 Docker 映象倉庫,進行安裝 或者更新而不在 yum install 或 yum update 命令中指定版本將始終安裝可用的最高版本, 這可能無法滿足您的穩定性需求。
- 在生產系統中,您應該安裝特定版本的 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-
- 啟動 Docker。
$ sudo systemctl start docker
- 驗證是否正確安裝了 docker,方法是執行 hello-world 映象。
$ sudo docker run hello-world
此命令將下載一個測試映象並在容器中執行它。容器執行時,它將輸出一條參考訊息並退出。
2)從軟體包進行安裝
使用從軟體包進行安裝可以參考文件;
這個時候,就已經安裝成功了:
HelloWrold
從倉庫裡面抓取一個映象到本地,以映象為模板,執行一個容器例項;
阿里雲映象加速
- 是什麼?
- 註冊一個屬於自己的阿里雲賬號(可複用淘寶賬號)
- 獲取加速器地址連結
- 登入阿里雲開發者平臺
- 獲取加速器地址
- 配置本機的Docker執行映象加速器
- 這個是CentOS6.8的配置:
- 這個是CentOS7的配置:
- 重新啟動Docker後臺服務:service docker restart
- Linux系統下配置完加速器需要檢查是否生效
我的阿里映象加速器沒有配置成功,之後,再來配置;—鬱悶
跟預期有些差距:
這個我的,配置阿里映象沒有成功:
網易雲映象加速
HelloWorld
docker run hello-world
Docker的底層執行原理
Docker是怎麼工作的?