什麼是 Docker?

邹立巍發表於2016-05-08

Docker 是一套平臺即服務 (PaaS) 產品,它使用作業系統級虛擬化技術以軟體包(稱為容器)的形式交付軟體。容器彼此隔離,並捆綁自己的軟體、庫和配置檔案;它們可以透過明確定義的渠道相互通訊。所有容器都由單個作業系統核心執行,因此使用的資源比虛擬機器少。

什麼是 Docker?

Docker 是一個開源容器化平臺,您可以使用它將應用程式及其所有依賴項打包到一個名為容器的標準化單元中。容器重量輕,因此易於攜帶,並且與底層基礎架構和其他容器隔離。您可以在安裝了 docker 的任何機器上將 docker 映像作為 docker 容器執行,而無需依賴作業系統。

Docker 之所以受歡迎,是因為:

  1. 可移植性。
  2. 可重複性。
  3. 效率。
  4. 可擴充套件性。

什麼是 Dockerfile?

Dockerfile 使用 DSL(領域特定語言)幷包含生成 Docker 映象的指令。Dockerfile 將定義快速生成映象的流程。在建立應用程式時,您應該按順序建立 Dockerfile,因為 Docker守護程式會從上到下執行所有​​指令。

(Docker 守護程序,通常簡稱為“Docker”,是管理系統上的 Docker 容器的後臺服務。)

  • 它是一個文字文件,包含必要的命令,執行後可幫助組裝 Docker 映象。
  • Docker 映象是使用 Docker 檔案建立的。

Docker 的工作原理

Docker 使用客戶端-伺服器架構。Docker 客戶端與 docker 守護程序通訊,這有助於構建、執行和分發 docker 容器。Docker 客戶端與守護程序在同一系統上執行,或者我們可以遠端將 Docker 客戶端與 Docker 守護程序連線起來。藉助 UNIX 套接字或網路上的 REST API,docker 客戶端和守護程序可以相互互動。

什麼是 Docker Image?

它是一個由多層組成的檔案,用於在 Docker 容器中執行程式碼。它們是一組用於建立 Docker 容器的指令。Docker 映象是一個可執行軟體包,其中包含執行應用程式所需的一切。此映象告知容器應如何例項化,確定將執行哪些軟體元件以及如何執行。Docker 容器是一個虛擬環境,它將應用程式程式碼與執行應用程式所需的所有依賴項捆綁在一起。應用程式可以在一個計算環境到另一個計算環境中快速可靠地執行。

什麼是 Docker 容器?

Docker 容器是映象的執行時例項。允許開發人員將應用程式與所需的所有部分(如庫和其他依賴項)一起打包。Docker 容器是 Docker 映象的執行時例項。容器包含應用程式所需的整個套件,因此應用程式可以以獨立的方式執行。例如,假設有一個帶有 NGINX SERVER 的 Ubuntu OS 映象,當使用 docker run 命令執行此映象時,將建立一個容器,並且 NGINX SERVER 將在 Ubuntu OS 上執行。

什麼是 Docker Hub?

Docker Hub 是一種儲存庫服務,它是一種基於雲的服務,人們可以隨時隨地透過網際網路推送他們的 Docker 容器映象,也可以從 Docker Hub 提取 Docker 容器映象。通常,它可以輕鬆查詢和重用映象。它提供的功能包括,您可以將映象推送為私有或公共登錄檔,您可以在其中儲存和共享 Docker 映象

DevOps 團隊主要使用 Docker Hub。它是一種開源工具,適用於所有作業系統。它就像儲存一樣,我們儲存影像並在需要時提取影像。當一個人想要從 Docker Hub 推送/提取影像時,他們必須具備 Docker 的基本知識。讓我們討論一下 Docker 工具的要求。

什麼是 Docker Compose?

Docker Compose 將執行基於 YAML 的多容器應用程式。YAML 檔案包含部署容器 Docker Compose 所需的所有配置,該配置與 Docker Swarm 整合,並提供構建和部署容器的說明。使用 Docker Compose,每個容器都構建為在單個主機上執行。

如何下載Docker Desktop?

Docker Desktop 提供 GUI 來處理 docker 容器、docker 映象和 docker 網路。Docker Desktop 提供單獨的環境,其中包含 Docker Engine、Docker CLI、Docker Compose、Kubernetes 和其他工具,這些工具是構建、運送和執行以容器形式執行應用程式所必需的,這使其更加使用者友好。

Docker 命令

docker 中有“n”個命令,以下是一些最常用的命令。

  1. Docker Run
  2. Docker Pull
  3. Docker PS
  4. Docker Stop
  5. Docker Start
  6. Docker rm
  7. Docker RMI
  8. Docker Images
  9. Docker exec
  10. Docker Login

Docker 引擎

託管容器的軟體名為 Docker Engine。Docker Engine 是一個基於客戶端-伺服器的應用程式。docker 引擎有 3 個主要元件:

  1. Server:負責在Docker上建立和管理Docker映象、容器、網路、卷等,稱為守護程序。
  2. REST API:它指定應用程式如何與伺服器互動並指示它做什麼。
  3. 客戶端:客戶端是一個 docker 命令列介面 (CLI),允許我們使用 docker 命令與 Docker 互動。

為什麼要使用 Docker

Docker 可用於打包應用程式及其依賴項,從而使其輕量級且易於更快更可靠地交付程式碼。如果機器中安裝了 docker 引擎,Docker 使在生產環境中執行應用程式變得非常簡單,docker 容器可以獨立於平臺。

什麼是 Docker For AWS?

Docker 是以容器形式執行應用程式的最強大工具。Docker 容器重量輕,可以在任何作業系統上執行。

AWS 提供 Amazon Elastic Container Service (Amazon ECS),它是一種完全託管的容器服務,您可以透過它部署、擴充套件和管理 Docker 容器。根據效能,Amazon ECS 是最可靠的平臺,它還可以與其他 AWS 服務整合,如負載平衡、服務發現和容器執行狀況監控。

Docker 容器與虛擬機器之間的區別

Docker 容器

虛擬機器

Docker 容器包含二進位制檔案、庫和配置檔案以及應用程式本身。

虛擬機器 (VM) 在虛擬機器管理程式上執行,虛擬機器管理程式允許多個虛擬機器與其自己的作業系統一起在一臺機器上執行。

它們不包含每個容器的客戶作業系統,而是依賴於底層作業系統核心,這使得容器變得輕量級。

每個虛擬機器都有自己的作業系統副本以及應用程式和必要的二進位制檔案,這使得它變得更大並且需要更多的資源。

容器與同一主機作業系統中的其他容器共享資源,並提供作業系統級別的程序隔離。

它們提供硬體級別的程序隔離,但啟動速度較慢。

在 Ubuntu 上安裝 Docker

1.刪​​除舊版本的Docker

$ sudo apt-get remove docker docker-engine docker.io containerd runc

2. Installing Docker Engine

$ sudo apt-get update
 
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
$ sudo groupadd docker
$ sudo usermod -aG docker $USER

檢查你的系統中是否成功安裝了docker

$ sudo docker run hello-world

示例:使用 Docker 容器化應用程式

1.建立一個包含2個檔案(Dockerfile和main.py檔案)的資料夾。

  • Dockerfile
  • 主程式

2. 使用以下程式碼編輯 main.py。

#!/usr/bin/env python3

print("Docker and GFG rock!")

3. 使用以下命令編輯 Dockerfile。

FROM python:latest
COPY main.py /
CMD [ "python", "./main.py" ]

4.建立Docker 映象。

建立並編輯 main.py 檔案和 Dockerfile 後,建立映像來包含您的應用程式。
$ sudo docker build -t python-test 。

“-t”選項允許定義影像的名稱。“python-test”是我們為影像選擇的名稱。

5.執行 Docker 映像

一旦建立了影像,您的程式碼就可以啟動了。

$ sudo docker run python-test

將映像推送到 Docker Hub 的示例

1.在 Docker Hub 上建立一個帳戶,如果已經有一個帳戶,則使用現有帳戶。

2.點選“Create Repository”按鈕,輸入檔名稱,點選“Create”。

3.現在將“標記我們的影像”並“將其推送到我們剛剛建立的 Docker Hub 儲存庫”。

現在,執行以下命令列出 docker 映象:

$ docker images

以上將給出這個結果

REPOSITORY TAG IMAGE_ID CREATED SIZE afrozchakure/python-test latest c7857f97ebbd 2 hours ago 933MB

影像 ID 用於標記影像。標記影像的語法是:

docker tag <image-id> <your dockerhub username>/python-test:latest
$ docker tag c7857f97ebbd afrozchakure/python-test:latest

4.將映象推送到 Docker Hub 儲存庫

$ docker push afrozchakure/python-test

從 Docker Hub 獲取並執行映象

1.要從本地系統中刪除特定影像的所有版本,我們使用該影像 ID。

$ docker rmi -f af939ee31fdc

2.現在執行映像,如果本地機器上不存在該映像,它將從 docker hub 獲取該映像。

$ docker run afrozchakure/python-test

結論

因此,您已經瞭解了 Docker 的基礎知識、虛擬機器和 Docker 容器之間的區別以及 Docker 中的一些常用術語。此外,我們還在系統上完成了 Docker 的安裝。我們使用 Docker 建立了一個應用程式,並將我們的映象推送到 Docker Hub。最後,我們瞭解瞭如何從本地系統中刪除特定映象,然後如果本地不存在該映象,則從 Docker Hub 中提取該映象。

什麼是Docker Build?

Docker build 是一個用於使用 Dockerfile 構建 docker 映象的命令。

什麼是Docker 日誌?

Docker 守護程序和 Docker 容器將以文字訊息的形式生成 docker 日誌,這將幫助您進一步排除故障、監控應用程式的效能並收集有關 Docker 環境狀態的資訊。

相關文章