Docker 對開發者來說就像是一個神奇的工具箱。它讓他們可以在稱為容器的小型便攜盒子中構建、運送和管理應用程式。容器就像虛擬房間,但比傳統的虛擬機(VM)更快、更有效率。多虧了 Docker,容器已經變得非常受歡迎,現在它們已成為現代軟體開發不可或缺的一部分。
Docker 是一個開源平台,能自動化應用程式在容器內的部署。容器是隔離的環境,包含運行應用程式所需的一切,包括代碼、執行時、庫和系統工具。Docker 為開發者提供了構建、管理和分發這些容器的工具。
開放容器倡議(OCI) 是由 Linux 基金會於 2015 年成立的開放治理結構。其目的是創建容器執行時和映像規範的行業標準,確保容器生態系統之間的互操作性。
Docker 最初開發了自己的容器執行時和映像格式。然而,隨著容器的興起和對更廣泛標準化的需求,Docker 將其容器執行時技術 runc 貢獻給 OCI。現在,Docker 的生態系統遵循 OCI 標準,使 Docker 容器與其他符合 OCI 標準的執行時和工具相容。
通過與 OCI 標準對齊,Docker 確保其容器和映像可以在各種平台和工具上運行,促進了更開放和協作的容器生態系統。
裸機:
虛擬機(VMs):
容器:
方面 | 容器 | 虛擬機 | 裸機 |
---|---|---|---|
資源效率 | 高 | 適中 | 最高 |
啟動時間 | 秒 | 分鐘 | N/A |
隔離性 | 程序級 | 完整的操作系統級 | 完全物理隔離 |
可攜性 | 非常高 | 適中 | 低 |
性能 | 接近原生 | 適中 | 原生 |
使用案例 | 微服務、CI/CD 管道 | 遺留應用程式、操作系統測試 | 高性能計算 |
docker --version
:檢查 Docker 版本。docker help
:顯示 Docker 命令和選項。docker info
:顯示系統範圍的 Docker 資訊。docker images
:列出所有本地映像。docker pull <image>
:從 Docker Hub 下載映像。docker build -t <image_name> .
:從當前目錄的 Dockerfile 建立映像。docker rmi <image>
:移除映像。docker tag <source_image> <new_image>
:用新名稱標記映像。docker run <image>
:執行來自某映像的容器。docker run -it <image>
:在互動模式下執行容器。docker run -d <image>
:在分離模式下執行容器。docker ps
:列出正在運行的容器。docker ps -a
:列出所有容器(包括已停止的容器)。docker stop <container>
:停止正在運行的容器。docker start <container>
:啟動已停止的容器。docker restart <container>
:重啟容器。docker rm <container>
:移除已停止的容器。docker exec -it <container> <command>
:在正在運行的容器中執行命令。docker logs <container>
:查看容器的日誌。docker top <container>
:顯示容器中運行的進程。docker stats <container>
:顯示實時資源使用統計。docker inspect <container>
:查看容器或映像的詳細資訊。docker rename <old_name> <new_name>
:重新命名容器。docker network ls
:列出所有 Docker 網路。docker network create <network_name>
:創建新網路。docker network connect <network> <container>
:將容器連接到網路。docker network disconnect <network> <container>
:將容器從網路中斷開。docker network inspect <network>
:查看網路的詳細資訊。docker volume ls
:列出所有卷。docker volume create <volume_name>
:創建卷。docker volume inspect <volume>
:顯示有關卷的詳細資訊。docker volume rm <volume>
:移除卷。讓我們創建一個簡單的 Docker 容器,運行一個 Python 腳本。
創建 Python 腳本:將以下代碼保存到名為 app.py
的檔案中:
print("Hello, Docker!")
創建 Dockerfile:創建名為 Dockerfile
的檔案,內容如下:
FROM python:3.9-slim
COPY app.py /app.py
CMD ["python", "/app.py"]
構建 Docker 映像:
docker build -t python-app .
運行 Docker 容器:
docker run python-app
這將輸出:
Hello, Docker!
使用容器構建、部署和運行應用程式對 Docker 來說是輕而易舉的。通過遵循 OCI 標準,Docker 確保在容器世界中一切無縫協作。容器非常高效、可攜帶且可擴展,這就是為什麼它們位於現代軟體開發的核心。如果你了解 Docker 及其如何與 OCI 一起工作,你就可以利用這項技術加快工作流程,並確保你的應用程式在任何平台上都能正常運行。
下週我將深入探討 Docker 架構,敬請期待。
原文出處:https://dev.to/juniourrau/introduction-to-docker-core-concepts-and-basics-for-beginners-4n0h