成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面向新手的Docker與容器基礎介紹

譯文 精選
云計算
在現代軟件開發領域,效率和一致性是不可或缺的重要因素。開發人員和運維團隊迫切需要一種能夠助力他們跨越不同環境,實現應用程序的無縫管理、部署與運行的解決方案。

譯者 | 劉濤

審校 | 重樓

在現代軟件開發領域,效率和一致性是不可或缺的重要因素。開發人員和運維團隊迫切需要一種能夠助力他們跨越不同環境,實現應用程序的無縫管理、部署與運行的解決方案。

容器及Docker技術的出現,無疑為軟件的構建、測試和部署方式帶來了顛覆性的變革。它們極大地簡化了軟件開發流程,提高了部署效率,并確保了應用在不同環境中的一致性表現。

無論是初涉技術領域的新手,還是希望深入了解Docker基礎知識的專業人士,本文都將為提供全面而詳盡的指導

目錄

  • 什么是容器?
  • 什么是Docker?
  • 什么選擇Docker?
  • Docker架構
  • Docker的容器運行時:containerd
  • 如何使用Docker創建一個簡單容器
  • 總結

什么是容器

在深入了解Docker之前,讓我們先對容器(container)有一個初步的認識。想象一下,正在開展一個項目,并且的應用程序在筆記本電腦上運行得十分順暢。然而,當嘗試在另一臺機器上部署并運行相同的應用程序時,卻遭遇了失敗。這種情況往往源于環境之間的差異:可能是操作系統的不同、已安裝軟件版本的不匹配或是配置上的差異。

容器技術正是為了解決這一問題而誕生的。它將應用程序及其所有的依賴項,包括庫、框架、配置文件等,都打包成一個單一的、標準化的單元。這樣一來,無論應用程序被部署到哪里——無論是在開發者的筆記本電腦上,還是在服務器上,甚至是在云端——它都能以完全相同的方式運行,從而極大地降低了因環境差異而導致的運行失敗的風險。

容器具備以下幾個關鍵特性:

  • 輕量級容器具有輕量級的特性。它共享主機系統的內核,這一點與虛擬機(VM)有著顯著區別。虛擬機需要單獨的操作系統實例,而容器由于共享內核,無需額外的操作系統資源開銷,所以在運行速度上更快,資源利用效率也更高。
  • 可移植性容器具有良好的可移植性。一旦構建完成,容器就能夠在各種各樣的環境中保持一致的運行狀態。無論是不同的操作系統版本,還是不同的硬件平臺,容器都能穩定運行,不會因為環境的改變而出現兼容性問題。
  • 隔離性容器運行于隔離的進程之中。這種隔離性意味著每個容器都像是一個獨立的小世界,它們在運行過程中不會對同一系統上運行的其他應用程序產生干擾。

什么是Docker?

既然我們已經對容器有了初步的了解,接下來就讓我們談談Docker——這個讓容器技術走向主流的重要平臺。

Docker是一個開源工具,它的核心目標是簡化容器的創建、管理和部署過程。自2013年面世以來,Docker憑借其出色的易用性、龐大的社區支持以及強大的工具生態系統,迅速崛起為容器化技術的首選解決方案。

Docker中的關鍵概念

  1. Docker鏡像:我們可以將Docker鏡像視為容器的藍圖。它包含了運行應用程序所需的一切元素,如代碼、庫以及系統依賴項等。這些鏡像都是根據Dockerfile中詳細編寫的一組指令來構建的,確保了鏡像內容的準確性和一致性。
  2. Docker容器:容器則是Docker鏡像的具體運行實例。當你創建并啟動一個容器時,Docker會將對應的鏡像加載到一個完全隔離的運行環境中,應用程序便可以在這個獨立的空間內運行,而不會受到外界因素的干擾。
  3. Dockerfile:Dockerfile是一個至關重要的文本文件,它包含了創建Docker鏡像所需執行的各個步驟。在這個文件中,你可以定義容器的各項配置,包括選擇基礎鏡像、添加應用程序代碼以及引入其他必要的依賴項等。
  4. Docker Hub:Docker Hub是一個功能強大的公共注冊表,開發人員可以在其中共享和訪問預構建的Docker鏡像。對于處理常見應用程序或技術堆棧的場景,Docker Hub上往往已經提供了大量可用的鏡像資源,這極大地節省了你的時間和精力。
  5. Docker Compose:對于那些需要同時運行多個容器(例如Web服務器和數據庫)的應用程序來說,Docker Compose則是一個不可或缺的工具。它允許你使用簡單的YAML文件(一種人類可讀的數據序列化格式,通常用于配置文件、數據交換等場景)來定義和管理多容器環境,從而實現了容器之間的協同工作和高效管理。

為什么選擇Docker?

Docker之所以廣受歡迎,主要歸因于它能夠有效地解決開發人員在日常工作中所面臨的多種挑戰:

  • 跨環境一致性:Docker為開發人員提供了一種“一次構建,隨處運行”的便捷開發方式。這意味著無論應用程序被部署在哪個環境中——從本地開發環境到生產環境——它都能以相同的方式運行,從而確保了應用程序在不同環境中的一致性和穩定性。
  • 速度:Docker容器的啟動和停止速度非常快,這使其在測試和部署管道中具有顯著優勢。開發人員可以迅速地對應用程序進行迭代和測試,大大提高了開發效率。
  • 資源高效利用:相較于虛擬機,Docker容器能夠更有效地共享主機系統的資源。它們減少了系統開銷,允許在相同的硬件上部署更多的容器,從而實現了更高的資源利用效率和部署密度。
  • 應用程序的版本控制:Docker不僅支持對代碼進行版本控制,還允許開發人員對代碼運行的環境進行版本控制。這意味著開發人員可以便捷地回滾到以前的應用程序版本或環境配置,這對于在生產環境中調試問題特別有用

Docker架構

初次接觸Docker時,可能會將其視為一個方便使用的工具盒。雖然這種“即插即用”的方式對于入門者來說并無不妥,但深入了解Docker的架構將為在故障排除、性能優化以及制定容器化策略方面提供有力的支持。

Docker的架構經過精心設計,旨在確保系統的效率、靈活性和可擴展性。它由多個相互協作的組件共同構成,這些組件協同工作,用于創建、管理和運行容器。接下來,讓我們一同深入了解這些核心組件。

核心組件

Docker 的架構是圍繞客戶端-服務器模型構建的,該模型包括以下組件:

  • Docker Client
  • Docker Daemon (dockerd)
  • Docker Engine
  • Docker Images
  • Docker Containers
  • Docker Registries

1.Docker Client

Docker Client是用戶與Docker進行互動的主要方式。作為一個功能強大的命令行工具,它借助REST API與Docker Daemon(稍后會詳細探討)進行通信,并發送各種指令。我們日常所使用的docker build、docker pull以及docker run等命令,都是通過Docker Client來執行的。

你輸入如docker run nginx這樣的命令時,Docker Client會迅速將其翻譯成Docker Daemon能夠理解并執行的請求。簡而言之,Docker Client就像是一個便捷的前端界面,它使得用戶能夠輕松地與Docker背后那些更為復雜的組件進行交互和操作。

2.Docker Daemon (dockerd)

Docker Daemon,亦被稱作dockerd,堪稱整個Docker操作體系的核心所在。它是一個后臺進程,主要負責監聽來自Docker Client的請求,并且對諸如容器、鏡像、網絡以及卷等Docker對象進行管理。

以下是Docker Daemon的主要職

  • 構建和運行容器:當客戶端發送運行容器的指令時,Docker Daemon會首先拉取所需的鏡像,接著創建對應的容器,最后啟動該容器。
  • 管理Docker資源:Docker Daemon承擔著處理多種任務的職責諸如網絡配置和卷管理等。Docker Daemon在主機上運行,并使用REST API、Unix套接字或網絡接口與Docker Client進行通信還負責與容器運行時(Container Runtime)進行交互容器運行時是Docker架構中的一個關鍵組件,它負責在主機上執行容器內的進程,并與Docker Daemon協作,以確保容器的正確運行和管理。

3. Docker Engine

Docker EngineDocker的核心部分,是整個平臺得以運行的關鍵所在,它將客戶端、daemon以及容器運行時有機地整合在一起。Docker Engine具備良好的跨平臺特性,能夠在多種操作系統上運行,其中涵蓋了Linux、Windows以及macOS等常見操作系統。

Docker Engine包含兩個版本:

  • Docker CE(Community Edition,社區版):版本是免費且開源的,在個人開發者群體以及小型項目中得到了廣泛的應用。
  • Docker EE(Enterprise Edition,企業版):作為付費的企業級版本,Docker EE為企業用戶提供了一系列附加功能。例如,它具備增強的安全性機制,能夠更好地保護企業數據和應用程序在容器環境中的安全;提供專業的支持服務,當企業用戶在使用過程中遇到問題時,可以及時獲得技術支持;還擁有認證等功能,有助于企業在合規性方面滿足相關要求等。

Docker Engine通過對構建、運行以及管理容器所需的各類組件進行集成,有效地簡化了容器編排這一復雜的工作流程。這使得無論是開發人員還是運維人員,在處理容器相關事務時都能夠更加高效、便捷地進行操作。

4.Docker Images

Docker鏡像(Docker Image)是一種只讀模板,包含應用程序運行所需的一切——代碼、庫、依賴項和配置。鏡像可以被視為容器的基石,每當運行一個容器時,系統實際上是在Docker鏡像的基礎之上,疊加了一個可寫層,從而允許容器在執行過程中對文件進行修改。

Docker鏡像通常由Dockerfile構建而成,Dockerfile是包含如何構建鏡像的指令的文本文件。例如,一個典型的Dockerfile可能以諸如nginx或ubuntu這樣的基礎鏡像開始,隨后通過一系列指令,如復制文件、安裝必要的依賴項或配置環境變量等,來逐步塑造出最終的鏡像。

以下是一個Dockerfile的簡單示例:

dockerfileCopy codeFROM nginx:latest
COPY ./html /usr/share/nginx/html
EXPOSE 80

在這個具體的例子中,我們選擇官方的Nginx鏡像作為基礎,將本地的HTML文件復制到容器的web目錄中,以便對外提供服務。

一旦鏡像構建完成可以被存儲在Docker注冊表中,以便與他人共享,共同推動容器化技術的發展。

5.Docker Containers

Docker Containers(Docker容器)是Docker鏡像的運行實例以其輕量級和高度隔離的特性而著稱。盡管它們與主機操作系統共享同一個內核,但每個容器都擁有獨立的文件系統、內存空間、CPU資源分配以及網絡配置。這種設計不僅賦予了容器出色的可移植性和可重復性,還確保了應用程序在不同環境下的穩定性和一致性。

Docker Containers的生命周期涵蓋了創建、啟動、運行、停止以及銷毀等多個階段。尤為值得一提的是,容器還有一個特別方便的功能:即使重啟電腦或服務器,這些容器仍然可以保留下來,不會丟失之前的配置和數據由于容器是基于鏡像構建的,因此它們能夠確保應用程序在任何運行環境中都能展現出相同的行為特性。

Docker容器的核心優勢如下:

  • 隔離性:容器之間以及容器與主機之間實現了嚴格的隔離,但它們仍然共享相同的操作系統內核。
  • 可移植性:容器能夠在本地機器、虛擬機以及云平臺上等任何地方運行,為應用程序的靈活部署提供了有力保障。

6. Docker Registries

Docker RegistriesDocker注冊表是存儲和分發Docker鏡像的核心樞紐。最受歡迎的注冊表是Docker Hub,它托管了數百萬計的公開鏡像資源此外,企業還可以根據自身需求搭建私有注冊表,以確保鏡像的安全存儲和分發。

Docker注冊表提供以下關鍵功能:

  • 鏡像版本管理通過為鏡像添加標簽來實現版本控制,從而方便用戶管理和切換不同的應用程序版本。
  • 訪問控制:注冊表支持公開和私有兩種模式,并提供了基于角色的訪問控制機制,來管理用戶拉取或推送鏡像的權限
  • 分發機制用戶可以從注冊表中拉取鏡像并在任何地方部署,從而極大地提高了容器化應用程序的共享和重用效率。

Docker的容器運行時:containerd

在Docker架構的近期發展中,一個尤為重要的變革是引入了containerd。以往,Docker依賴于其自有的容器運行時,但如今,它已轉而采用containerd這一遵循行業標準的容器運行時。值得一提的是,containerd同樣被Kubernetes等其他主流平臺所使用

containerd負責以下任務:

  • 啟動和停止容器
  • 管理容器的存儲和網絡
  • 從注冊表中拉取容器鏡像

通過將容器運行時與Docker的高級功能分離,Docker架構變得更加模塊化與靈活這個特點允許其他工具也能輕松集成并使用containerd,而Docker則更加專注于提升用戶界面功能的豐富性

如何使用Docker創建一個簡單容器

拉取Linux鏡像

首先,從Docker Hub拉取alpine鏡像。alpine鏡像是一個小的Linux發行版鏡像,旨在實現輕量級和快速運行。

運行以下命令:

docker pull alpine

這將把alpine鏡像下載到本地系統。

運行容器

接下來,我們使用這個alpine鏡像來創建并運行一個Docker容器。同時,我們還可以在容器內部啟動一個終端會話,以便進行交互操作。

docker run -it alpine /bin/sh

以下是每個選項的含義:

  • docker run:創建并啟動一個新容器。
  • -it:允許與容器進行交互(交互模式+終端)。
  • alpine:指定要使用的鏡像。
  • /bin/sh:指定在容器內部要運行的命令(在此例中為一個shell會話)。

探索容器

一旦容器運行起來,就會出現一個shell提示符如下所示

/ #

這表明已進入Alpine Linux容器。現在,可以運行Linux命令。例如:

檢查當前目錄:

Pwd

列出目錄中的文件:

ls

輸出:會呈現出一個最小的目錄結構,這是因為Alpine屬于輕量級鏡像。

還可以安裝一個軟件包(Alpine使用apk作為包管理器):

apk add curl

退出容器

完成在Alpine容器內的探索后,可以通過輸入exit命令來關閉終端會話并停止容器運行

bashCopy codeexit

在容器停止后重新訪問

如果你希望在容器停止后再次訪問它,可以使用以下命令列出所有容器(包括已停止的容器):

docker ps -a

會看到包含容器ID和狀態的容器列表,然后可以啟動已停止的容器:

docker start <container-id>

可以使用以下命令連接到容器的shell:

docker exec -it <container-id> /bin/sh

如果不再需要該容器,可以將其刪除:

1.停止容器(如果它仍在運行):

docker stop <container-id>

2.刪除容器:


docker rm <container-id>

Docker關鍵命令回顧

命令

描述

docker pull alpine

下載 Alpine Linux 映像

docker run -it alpine /bin/sh

創建并啟動交互式容器

docker ps -a

列出所有容器(運行和已停止)

docker start <container-id>

啟動已停止的容器

docker exec -it <container-id>

連接到正在運行的容器

docker stop <container-id>

停止正在運行的容器

docker rm <container-id>

刪除已停止的容器

總結

現在已經奠定了堅實的基礎,接下來是將所學知識付諸實踐的時刻了。勇敢地邁出第一步,嘗試使用Docker來構建的首個容器,并深入探索其龐大且充滿活力的生態系統。

相信在不久的將來,就會深刻體會到Docker為何能成為現代DevOps和軟件工程領域不可或缺的基石。它不僅能夠極大地提升開發、測試和部署的效率,還能為的項目帶來前所未有的靈活性和可擴展性。祝在Docker的學習和實踐之旅中取得豐碩的成果!

譯者介紹

劉濤,51CTO社區編輯,某大型央企系統上線檢測管控負責人。

標題:An Introduction to Docker and Containers for Beginners,作者:Kedar Makode


責任編輯:華軒 來源: 51CTO
相關推薦

2022-03-10 08:24:17

Docker容器SaaS

2015-07-17 16:49:13

OpenStack開源云平臺云計算

2011-06-24 14:34:56

SEO

2009-07-08 11:17:10

Servlet容器Servlet Con

2017-11-15 08:46:58

Linux編程語言服務器

2021-12-25 23:25:04

LinuxDocker容器

2022-09-01 07:15:48

docker匿名掛載

2022-08-04 07:25:22

Docker部署項目

2009-12-01 14:04:17

VS2003 SP

2022-10-27 07:09:58

容器通信

2022-10-14 07:07:46

架構

2022-01-24 17:08:33

Linux容器Docker

2011-05-27 17:28:27

nofollowSEO

2011-06-30 18:39:35

SEO

2023-05-30 14:56:18

Docker開發容器

2022-09-15 16:27:16

云計算

2015-08-19 14:54:25

2020-03-17 15:55:12

Redis數據庫命令

2014-06-23 09:11:01

2009-12-17 10:33:05

嵌入式Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品日产第一区二区三区 | 成人视屏在线观看 | 久久久久久亚洲精品不卡 | 日韩高清中文字幕 | 久久色视频 | 天堂成人国产精品一区 | 日韩av在线中文字幕 | 久久久久久久久久久久久91 | 午夜精品久久久久久 | 日韩快播电影 | 亚洲成av人片在线观看 | 日本五月婷婷 | 国产精品资源在线 | 九色 在线 | 亚洲精品中文字幕 | 国产精品中文字幕一区二区三区 | 欧美一区视频 | 国产日产欧产精品精品推荐蛮挑 | 国产极品车模吞精高潮呻吟 | 亚洲成a人片| 欧美日韩1区2区 | 九九亚洲 | 国产一级电影网 | 国产毛片久久久久久久久春天 | 国产专区在线 | 久久久久国产一区二区三区四区 | 国产在线对白 | 国产成人精品免费 | 久久免费精品视频 | 91日韩在线| 日韩在线播放视频 | 在线观看视频一区 | 国产日韩欧美在线 | 中文字幕在线视频一区二区三区 | 中国毛片免费 | 精品欧美在线观看 | 精品国产18久久久久久二百 | 美女久久视频 | 日韩视频在线免费观看 | 成人免费黄色片 | 欧美日一区 |