介紹

Docker是一個用於在容器內開發、運輸和執行應用程式的平台。它為軟體開發和部署提供了一個輕量級、可移植且一致的環境。本指南涵蓋了從初級到高級的基本 Docker 命令,幫助 DevOps 工程師有效管理其容器化應用程式

🎯 關鍵概念

在深入了解這些指令之前,我們先回顧一些基本的 Docker 概念:

  • 圖片:一個輕量級的、獨立的、可執行的包,包含執行軟體所需的一切。

  • 容器:Docker 映像的執行時實例。

  • Dockerfile :包含一系列有關如何建置 Docker 映像的說明的腳本。

  • Docker Compose :用於定義和執行多容器 Docker 應用程式的工具。

🏁 初學者指令

1. 安裝

檢查 Docker 版本

docker --version

顯示已安裝的 Docker 版本。

2. Docker 映像

列出 Docker 映像

docker images

列出本機上的所有 Docker 映像。

拉取 Docker 映像

docker pull <image_name>

從註冊表(例如 Docker Hub)中提取 Docker 映像。

刪除 Docker 映像

docker rmi <image_name>

從本機電腦中刪除 Docker 映像。

3.Docker容器

列出正在執行的容器

docker ps

列出所有正在執行的 Docker 容器。

列出所有容器

docker ps -a

列出所有 Docker 容器,包括已停止的容器。

執行容器

docker run -d --name <container_name> <image_name>

以分離模式從 Docker 映像執行容器。

停止容器

docker stop <container_name>

停止正在執行的 Docker 容器。

啟動一個容器

docker start <container_name>

啟動已停止的 Docker 容器。

移除容器

docker rm <container_name>

刪除 Docker 容器。

查看容器日誌

docker logs <container_name>

顯示Docker容器的日誌。

4.Docker網絡

列出 Docker 網路

docker network ls

列出所有 Docker 網路。

建立 Docker 網路

docker network create <network_name>

建立一個新的 Docker 網路。

將容器連接到網絡

docker network connect <network_name> <container_name>

將容器連接到 Docker 網路。

斷開容器與網路的連接

docker network disconnect <network_name> <container_name>

中斷容器與 Docker 網路的連線。

🚀 中級命令

1.Docker 卷

列出 Docker 卷

docker volume ls

列出所有 Docker 磁碟區。

建立 Docker 卷

docker volume create <volume_name>

建立一個新的 Docker 磁碟區。

刪除 Docker 卷

docker volume rm <volume_name>

刪除 Docker 磁碟區。

將卷掛載到容器

docker run -d --name <container_name> -v <volume_name>:/path/in/container <image_name>

將 Docker 磁碟區安裝到容器。

2.Docker 組合

安裝 Docker 組合

sudo curl -L "https://github.com/docker/compose/releases/download/<version>/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

安裝 Docker Compose。

檢查 Docker Compose 版本

docker-compose --version

顯示已安裝的 Docker Compose 版本。

Docker 撰寫文件範例

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example

使用 Docker Compose 定義多容器應用程式。

執行 Docker Compose

docker-compose up -d

以分離模式執行 Docker Compose 應用程式。

停止 Docker Compose

docker-compose down

停止並刪除 Docker Compose 應用程式。

3. Dockerfile

Dockerfile 範例

# Use an official Python runtime as a parent image
FROM python:3.8-slim

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]

為 Python 應用程式定義 Dockerfile。

建置 Docker 映像

docker build -t <image_name> .

從 Dockerfile 建立 Docker 映像。

4.Docker 群

初始化 Docker Swarm

docker swarm init

初始化 Docker Swarm。

列出 Swarm 節點

docker node ls

列出 Docker Swarm 中的所有節點。

在 Swarm 中部署堆疊

docker stack deploy -c <compose-file> <stack_name>

在 Docker Swarm 中部署堆疊。

從 Swarm 中刪除堆疊

docker stack rm <stack_name>

從 Docker Swarm 中刪除堆疊。

5. Docker 的秘密

建立 Docker 秘密

echo "my_secret_value" | docker secret create <secret_name> -

建立一個新的 Docker 秘密。

列出 Docker 秘密

docker secret ls

列出所有 Docker 秘密。

刪除 Docker 秘密

docker secret rm <secret_name>

刪除 Docker 秘密。

🧠 進階指令

1.Docker檢查

檢查 Docker 容器

docker inspect <container_name>

顯示有關 Docker 容器的詳細資訊。

檢查 Docker 映像

docker inspect <image_name>

顯示有關 Docker 映像的詳細資訊。

2.Docker 統計資料

查看容器統計資訊

docker stats <container_name>

顯示 Docker 容器的即時統計資訊。

3. Docker 事件

查看 Docker 事件

docker events

顯示來自 Docker 伺服器的即時事件。

4. Docker 匯出和匯入

出口貨櫃

docker export <container_name> -o <file_name>.tar

將 Docker 容器匯出到 tar 檔案。

進口貨櫃

docker import <file_name>.tar

從 tar 檔案匯入容器。

5. Docker 保存和加載

保存 Docker 映像

docker save -o <file_name>.tar <image_name>

將 Docker 映像儲存到 tar 檔案。

加載 Docker 映像

docker load -i <file_name>.tar

從 tar 檔案載入 Docker 映像。

6. Docker 修剪

刪除未使用的資料

docker system prune

刪除未使用的 Docker 資料(映像、容器、網路、磁碟區)。

7. Docker 上下文

列出 Docker 上下文

docker context ls

列出所有 Docker 上下文。

建立 Docker 上下文

docker context create <context_name>

建立一個新的 Docker 上下文。

使用 Docker 上下文

docker context use <context_name>

切換到特定的 Docker 上下文。

8.Docker 建置工具包

啟用建置工具包

export DOCKER_BUILDKIT=1
docker build -t <image_name> .

啟用 Docker BuildKit 以提高建置效能。

📊 最佳實踐

使用版本控制

  • 將 Dockerfile、Compose 檔案和其他配置儲存在版本控制系統(例如 Git)中,以追蹤變更並與團隊成員合作。

保持影像輕量

  • 透過使用多階段建置並刪除不必要的檔案和依賴項,最大限度地減少 Docker 映像的大小。

使用標籤

  • 使用有意義且特定於版本的標籤標記您的 Docker 映像,以便輕鬆辨識和管理它們。

保護映像和容器的安全

  • 掃描您的 Docker 映像是否有漏洞,並使用安全最佳實務來保護您的容器。

自動化建置和部署

  • 將 Docker 與 CI/CD 管道集成,以自動建置、測試和部署容器化應用程式。

監控和日誌

  • 持續監控您的 Docker 容器並收集日誌以進行故障排除和效能分析。

使用 Docker Compose 建置多容器應用程式

  • 使用 Docker Compose 定義和管理多容器應用程式,從而更輕鬆地部署和擴展服務。

定期修剪未使用的資源

  • 定期修剪未使用的映像、容器、網路和磁碟區,以釋放磁碟空間並維護乾淨的 Docker 環境。

🚀 結論

掌握 Docker 命令(從初級到高級)對於 DevOps 工程師有效管理和自動化容器化應用程式至關重要。這份綜合指南可作為您駕馭 Docker 環境的寶貴參考。透過遵循最佳實踐並利用這些命令,您可以確保強大且高效的容器編排設定。

快樂 Docker 化! 🎉


感謝您閱讀我的部落格 …:)

©版權所有: ProDevOpsGuy

影像

加入我們的Telegram 社群||關注我了解更多DevOps 內容。


原文出處:https://dev.to/prodevopsguytech/docker-commands-from-beginner-to-advanced-for-devops-engineers-bb3


共有 0 則留言