1. 程式人生 > >Docker快速入門系列(二)——理解Docker&容器

Docker快速入門系列(二)——理解Docker&容器

                                                       《 理解Docker&容器 》

理解 Docker

一、概述

“ Docker 是全球領先的軟體容器平臺 ”。開發人員利用 Docker 可以消除協作編碼時“ 在我的機器上可正常工作 ”的問題。運維人員利用 Docker 可以在隔離容器中並行執行和管理應用,獲得更好的計算密度。企業利用 Docker 可以構建敏捷的軟體交付管道,以更快的速度、更高的安全性和可靠的應用釋出新功能-版本迭代(滿足現代化企業的快速發展需求)。

二、面向不同的使用者(個性化定製)

面向開發人員的Docker

Docker 能夠自動執行重複性任務,例如搭建和配置開發環境,從而解放了開發人員以便他們專注在真正重要的事情上:構建傑出的軟體。

開發人員使用了 Docker,就不必安裝和配置複雜的資料庫,也無需在不相容語言工具鏈版本之間切換時擔心。應用容器化之後,其複雜性就被轉移到能夠輕鬆構建共享執行的容器中。當有新同事安排到新的專案組時,無需再費時費力地安裝軟體和配置各種所需的執行時環境。以 Dockerfile 檔案形式釋出的程式碼使用起來非常簡單:首先安裝 Docker 和編輯器,然後拉取作為 Docker 映象打包在一起的依賴資源,短短數分鐘,就能夠構建和除錯應用了。

特點:

1、不受應用、語言或技術棧的限制

構建、測試、除錯和部署以任何程式語言編寫的 Linux 和 Windows Server 容器應用,無需擔心任何不相容或版本衝突情況。

2、絕佳的開發體驗

工作就緒時間縮短 65%:快速構建、測試和運行復雜的多容器應用,無需再浪費時間在伺服器和開發人員機器上安裝和維護軟體。所有依賴資源都在容器中執行,消除“在我的機器上可正常工作”的問題。

3、內建容器編排

Docker 內建易於配置的 Swarm 叢集功能。在使用最小設定的模擬生產環境中測試和除錯應用。

三、面向系統管理員的Docker

Docker 簡化了軟體交付。既能順利地開發和部署漏洞補丁與新功能,還能夠實時擴充套件應用。

Docker 是開發人員和 IT 運維團隊的祕密武器。有了 Docker,就能夠自動並安全地構建交付測試部署應用,順利地進行移植。無需再查閱令人煩惱的論壇部落格、敘述檔案、執行手冊、便利貼等等陳舊冗餘的資訊。使用 Docker 的團隊後的映象在開發、預演和生產環境中都能一樣工作。新功能和修訂都能迅速地悄然部署到客戶環境中以正常的執行。

特點:

1、交付速度提高 13 倍

Docker 使用者交付軟體的速度平均提高了 13 倍。使用 Docker 的團隊能夠更加迅速地推送軟體更新,將修訂和新功能部署到客戶環境中。

2、快速擴充套件

內建編排元件能夠擴充套件到數千個節點容器。Docker 容器能夠在短短數秒之內啟動和停止,便於擴充套件應用服務,以滿足客戶的高峰需求,並在峰值下降時縮減規模。

3、提高效率、降低成本

應用維護和工時都能節省高達 10 倍。Docker 的輕鬆部署、識別和解決問題,降低了總體運維成本。縮短部署更新的停機時間,遇到問題時能迅速回滾,儘量減少系統應用中斷執行的情況。

4、分發和共享內容

通過本地或雲端的安全 Docker 映象庫構建、管理和分發 Docker 映象,並在運維中自動同步映象更新、配置更改和構建歷史。

5、輕鬆共享應用

Docker 確保應用在任何環境中都能始終如一地工作。在 Docker 映象中,整個技術棧和配置都是映象的一部分,使用者只需安裝 Docker,無需配置複雜的主機環境。

6、保證應用安全

與授權使用者安全地協作開發應用,全程保護程式碼安全。Docker Content Trust 和內建安全元件或者說安全機制確保在適當的時間將適當的程式碼提供給適當的人員。

四、面向企業的Docker

Docker 是現代應用平臺的核心,是開發人員與運維人員、Linux 和 Windows 之間的紐帶。Docker 既適用於雲,也可以在本地部署;既支援傳統架構,也支援微服務架構。使用 Docker 可以構建連線保護排程容器,從開發到生產全程進行管理。Docker 以最優成本確保應用敏捷、支援雲且安全,伴隨企業踏上數字轉型的征程。

特點:

1、一個平臺,適用於所有應用

無論是單體應用還是微服務應用,無論是 Linux 還是 Windows 應用,無論是部署在本地還是在雲端,Docker 為所有應用提供了一套統一的框架,一個標準的容器和工作流程,確保應用安全敏捷可移植

2、大規模快速釋出

Docker 容器通過自動化部署流程,加速微服務架構的應用交付。可以頻繁地釋出新功能(必要時也可實現快速回滾),迅速地滿足客戶需要。

3、打破壁壘

通過開放式介面、API 和外掛,可以輕鬆地將 Docker 整合到現有環境,並擴充套件到不同的系統。開發和運維團隊利用公共介面可以順利協作,互不干擾。

認識容器

“ 容器是一種標準化的軟體單元 ” ,將軟體打包成標準化單元,以用於開發、交付和部署。

有了容器,就可以將軟體執行所需的所有資源打包到一個隔離的容器中。容器與虛擬機器不同,不需要像虛擬機器那樣捆綁一整套作業系統,只需要軟體工作所需的庫資源和設定即可。系統因此而變得高效、輕量、自給自足,還能保證部署在任何環境中的軟體都能始終如一地執行。

容器映象是輕量的可執行的獨立的軟體包,包含軟體執行所需的所有內容:程式碼、執行時環境、系統工具、系統庫和設定等。容器化軟體適用於基於 Linux 和 Windows 的應用,在任何環境中都能夠始終如一地執行。容器賦予了軟體獨立性,使其免受外在環境差異(例如,開發和預演環境的差異)的影響,從而有助於減少團隊間在相同基礎設施上執行不同軟體時的衝突。

容器的三大重量級特性:

1、輕量級的

在一臺機器上執行的多個 Docker 容器可以共享這臺機器的作業系統核心;它們能夠迅速啟動,只需佔用很少的計算和記憶體資源。映象是通過檔案系統層進行構造的,並共享一些公共檔案。這樣就能儘量降低磁碟用量,並能更快地下載映象。

2、標準化的

Docker 容器基於開放式標準,能夠在所有主流 Linux 版本、Microsoft Windows 以及包括 VM、裸機伺服器和雲在內的任何基礎設施上執行。

3、安全的

Docker 賦予應用的隔離性不僅限於彼此隔離,還獨立於底層的基礎設施。Docker 預設提供最強的隔離,因此應用出現問題,也只是單個容器的問題,而不會波及到整臺機器。

容器 VS 虛擬機器

容器和虛擬機器具有相似的資源隔離和分配優勢,但功能有所不同,因為容器虛擬化的是作業系統,而不是硬體,因此容器更容易移植,效率也更高。

關於容器:

容器是一個應用層抽象,用於將程式碼和依賴資源打包在一起。多個容器可以在同一臺機器上執行,共享作業系統核心,但各自作為獨立的程序在使用者空間中執行。與虛擬機器相比,容器佔用的空間較少(容器映象大小通常只有幾十兆,最多也就幾百兆),瞬間就能完成啟動。

關於虛擬機器:

虛擬機器 (VM) 是一個物理硬體層抽象,用於將一臺伺服器變成多臺伺服器。管理程式允許多個 VM 在一臺機器上執行。每個 VM 都包含一整套作業系統、一個或多個應用、必要的二進位制檔案和庫資源,因此佔用大量空間。而且 VM 啟動也十分緩慢。

容器和虛擬機器共存

1、獨立存在的容器

2、容器與虛擬機器的融合

將容器和虛擬機器配合使用,為應用的部署和管理提供極大的靈活性。

Docker 的發展歷史

2013 年,Docker 橫空出世,將軟體容器概念推出市場,在應用開發領域掀起了一場革命浪潮。短短數年,Docker 在應用開發、打包和管理領域引入了一套新詞彙、框架和標準,給行業帶來了巨大的改變和影響。

公司成立之初的核心業務是 dotCloud,致力於將 dotCloud 轉變成更優秀的 Linux 容器技術 - 一種可移植、易部署的靈活技術。Docker 後來將 libcontainer 開源,聯手世界各地的貢獻者推進開發程序。僅僅兩年之後,隨著容器生態的逐步發展和成熟,Docker 於 2015 年 6 月將規範和執行時環境程式碼(現稱 runC)捐贈給了開放容器計劃(OCI),以幫助制定容器的標準化方法。

在取得這一次巨大進步後,Docker 乘勢而上,推出 Containerd 專案。Containerd 是 Docker 引擎守護程序的核心容器執行時環境。Containerd 是一種行業標準的容器執行時環境,具備簡潔穩健可移植特性,是更高階系統的可嵌入式元件。Docker 引擎是基於 runC 和 Containerd 構建的。該協作專案為開發人員提供了應用的移植性,推動了 OCI 進行容器標準化,促進了工具生態圈的增長,繁榮了免費的映象市場以便社群可以分享和改造預製的應用程式。

總的來說,Containerd 就是一種行業標準的容器執行時環境,具備簡潔、穩健和可移植特性。它可以用作 Linux 和 Windows 的守護程序,負責管理主機系統整個容器的生命週期:映象傳輸儲存容器執行監控底層儲存網路連線

Docker 應用場景

1、傳統應用現代化

將現有應用打包至容器,無需更改應用程式碼,應用安全、成本和雲可移植性的改進立竿見影。

2、開發運維 (CI/CD)

加速和自動化開發流程,獲得快速反饋的同時消除應用衝突,提高開發人員生產力。

3、微服務

容器簡化了以微服務架構模式設計的應用的開發和部署。

4、基礎設施優化

將應用容器化,在相同的伺服器上並行執行容器,改善工作負載強度。Docker 通過整合基礎設施,提高利用率和加速雲遷移,可幫助使用者降低成本。

 5、混合雲 

無論是私有資料中心還是公有云基礎設施,Docker 都允許在各種基礎設施之間無縫移植任何應用,而無需重新編碼。加速雲遷移,支援混合雲環境或多重雲環境。

參考自百科:百度百科 

 WIKI:WIKI

 好了,關於 Docker快速入門系列(二)——理解Docker&容器  就寫到這兒了,如果還有什麼疑問或遇到什麼問題歡迎掃碼提問,也可以給我留言哦,我會一一詳細的解答的。 
歇後語:“ 共同學習,共同進步 ”,也希望大家多多關注CSND的IT社群。

作       者: 華    仔
聯絡作者: [email protected]
來        源: CSDN (Chinese Software Developer Network)
本文為博主原創文章,請在轉載時務必註明博文出處!

相關推薦

Docker快速入門系列——理解Docker&容器

                                                       《 理解Docker&容器 》 理解 Docker 一、概述 “ Docker 是全球領先的軟體容器平臺 ”。開發人員利用 Docker

Docker快速入門系列——CentOS-7.5下使用yum命令快速安裝Docker CE

                                            《 CentOs-7.5下安裝Docker CE 》 先決條件 在安裝Docker CE前,CentOS 系統版本應該升級到64位版本的 CentOS 7或以上,在這兒

Docker快速入門系列——Docker常用命令之映象命令

                                             《 Docker常用命令之映象命令 》 前言 在前面的文章中進行了Docker的安裝和配置,在接下來的文章中將對 Docker 的常用命令進行介紹,本篇先從最基本的 “

Docker快速入門系列——Docker映象基本理論概述

                                                    《 Docker映象基本理論概述 》 前言 在前面進行了docker相關的常用命令進行了詳細的介紹,接下來將進入Docker的映象操作篇,通過本篇部落格的學

【ASP.NET Core快速入門部署到IIS

圖片 cor .com servers 訪問 publish img 控制臺 -m 原文:【ASP.NET Core快速入門】(二)部署到IIS配置IIS模塊 ASP.NET Core Module載地址:https://docs.microsoft.com/en-us/

Flutter入門系列---Flutter的原理及美團的實踐

轉載自:美團技術團隊 導讀 Flutter是Google開發的一套全新的跨平臺、開源UI框架,支援iOS、Android系統開發,並且是未來新作業系統Fuchsia的預設開發套件。自從2017年5月釋出第一個版本以來,目前Flutter已經發布了近60個版本,並且在2018年5月釋出了第一個

Golang 入門系列理解Go中的協程Goroutine

今天就來講講go 裡面的高階功能,也是go語言重要的特性:Go協程(Goroutine)。 什麼是Go協程 Go協程(Goroutine)是與其他函式同時執行的函式。可以認為Go協程是輕量級的執行緒,由Go執行時來管理。 在函式呼叫前加上go關鍵字,這次呼叫就會在一個新的goroutine中併發執行。當被

爬蟲入門系列:優雅的HTTP庫requests

爬蟲入門系列目錄: urllib、urllib2、urllib3、httplib、httplib2 都是和 HTTP 相關的 Python 模組,看名字就覺得很反人類,更糟糕的是這些模組在 Python2 與 Python3 中有很大的差異,如果業務程式碼要同時相容 2 和 3,寫起來

Rancher及Docker快速上手指南

......接上一篇文章 四、新增和管理容器 在Rancher通過介面方式新增容器的方式其實有兩種,一種是在上面提到的管理主機,直接新增獨立容器(獨立於Rancher平臺的容器,就算Rancher平臺停了,容器還會在各自主機保留),另一種是下一節會講到的,通過應用新增的方式新增容器(由R

sencha touch 入門系列 sencha touch 開發準備

這是本人第一次寫部落格教程,沒什麼經驗,文筆也不是很好,寫這教程一方面為了鞏固自己這段時間的學習成果,一方面幫助大家解決問題,歡迎大家多提建議,指出問題。接下來我們就開始我們的sencha touch開發之旅了。   首先,我們開始搭建sencha touch的開發環境

Scala程式設計快速入門系列

目    錄 一、Scala概述 二、Scala資料型別 三、Scala函式 四、Scala集合 五、Scala伴生物件 六、Scala trait 七、Actor 八、隱式轉換與隱式引數 九、Scala JDBC 由於整理的篇幅較長,所以文章計劃分三次釋出。

MongoDB入門系列:Insert、Update、Delete、Drop

概述   本章節介紹Insert、Update、Delete、Drop操作基本語法。 環境: Version:3.4 insert insert()基本語法如下: db.collection.insert( <document or array of documents&

GDI+入門系列——Brush簡介

此係列的文章,是公司的學習資料中找到,不知道是哪位仁兄總結,作為入門教程,拿出來分享。例項都比較簡單,不多說,直接貼程式碼,並會適當加些註釋: Brush 畫刷 SolidBrush 定義單色畫筆。畫筆用於填充圖形形狀,如矩形、橢圓、扇形、多邊形和封閉路徑 類的每個屬性都

Android OpenGL ES 入門系列 --- 環境搭建

轉載請註明出處 本章介紹如何使用GLSurfaceView和GLSurfaceView.Renderer完成在Activity中的最簡單實現。 1.在AndroidManifest.xml的manifest節點中宣告OpenGL ES的使用    <!--宣告

SpringBoot入門系列如何返回統一的資料格式

前面介紹了Spring Boot的優點,然後介紹瞭如何快速建立Spring Boot 專案。不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html。 今天來說一說Spring的@Controller和@RestCo

docker run命令解析Docker daemon--container create

上一篇文章咱們分析了docker run命令在Docker client中的處理,這一篇文章咱們分析在Docker daemon中的處理。 Docker client傳送容器管理請求,由Docker daemon接收並處理。原始碼基於Docker-ce17.09 1、所謂

docker run命令解析Docker daemon--container start

上一篇咱們簡單的分析了docker run命令在Docker daemon中的create實現,接下來咱們開始start的分析。原始碼基於Docker-ce17.09 1.1、流程: func (s *containerRouter) postContaine

Docker的使用初探Docker與.NET Core的結合

目錄 Docker的使用初探(二):Docker與.NET Core的結合 新增Dockefile 1. 在建立專案時新增 2. 手動新增 3. 容器業務流程協調控制程式支援 Dockefile語法 Docker專

爬蟲入門系列快速理解HTTP協議

爬蟲入門系列目錄: 4月份給自己挖一個爬蟲系列的坑,主要涉及HTTP 協議、正則表示式、爬蟲框架 Scrapy、訊息佇列、資料庫等內容。 爬蟲的基本原理是模擬瀏覽器進行 HTTP 請求,理解 HTTP 協議是寫爬蟲的必備基礎,招聘網站的爬蟲崗位也赫然寫著熟練掌握HTTP協議規範,寫

Spring Boot入門系列快速打造Restful API 介面

spring boot入門系列文章已經寫到第二十篇,前面我們講了spring boot的基礎入門的內容,也介紹了spring boot 整合mybatis,整合redis、整合Thymeleaf 模板引擎 等各種框架,同時也介紹了使用jdbcTemplate 操作資料庫,配置多資料來源 等系列內容。應該說sp