首頁 >後端開發 >Golang >使用GitHub操作和容器註冊表來掌握Docker Image Management

使用GitHub操作和容器註冊表來掌握Docker Image Management

Linda Hamilton
Linda Hamilton原創
2025-01-28 14:04:10657瀏覽

掌握docker圖像管理與github動作:綜合指南

>

>朋友和同事經常問:“您如何如此高效地管理部署?” 我的秘密?自動執行重複任務並專注於真正重要的事情。這篇文章詳細介紹了我如何使用GitHub操作和容器註冊表進行無縫的Docker Image Management-您可以輕鬆複製的過程。

> 在當今的軟件開發環境中,CI/CD不是奢侈品。這是必需的。想像一下在享用咖啡的同時毫不費力地部署代碼 - 這是將github動作和容器註冊表結合的能力。

為什麼github動作和容器註冊表至關重要

>

Mastering Docker Image Management with GitHub Actions and Container Registries

github動作:您的CI/CD合作夥伴

github動作不僅僅是一種自動化工具;這是您集成的CI/CD解決方案,響應代碼推送,拉請請求或計劃的事件。 它的無縫GITHUB集成使其非常適合已經使用該平台的團隊。 >

>容器註冊表:您的圖像存儲庫

將諸如Docker Hub或Github容器註冊表(GHCR)之類的容器註冊表作為您的Docker圖像的安全存儲庫。他們提供版本控制和在從開發到生產的所有環境中的各個環境中的一致部署。 >

常見的Docker圖像管理挑戰

Mastering Docker Image Management with GitHub Actions and Container Registries

手動過程:
    沒人喜歡重複的手動任務。
  • 複雜的標籤:
  • 管理圖像標籤可能是壓倒性的。
  • 安全問題:
  • 確保註冊表需要仔細的計劃。
  • > 慢慢的構建時間:
  • 等待圖像構建可能會顯著影響生產力。
  • >簡化您的工作流程:逐步指南
>步驟1:配置您的github操作工作流程

>在您的存儲庫中創建A Mastering Docker Image Management with GitHub Actions and Container Registries目錄,並定義YAML Workflow文件。 此示例構建,標籤和推動Docker映像:

.github/workflows>步驟2:安全管理秘密

在GitHub Secrets中牢固地將敏感信息(註冊表憑證)存儲。 轉到您的存儲庫的
<code class="language-yaml">name: Build and Push Docker Image
on:
  push:
    branches:
      - main
jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v4
    - name: Log in to GitHub Container Registry
      # Securely authenticate with GHCR
      run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
    - name: Build Docker Image
      # Build with 'latest' tag
      run: docker build -t ghcr.io/${{ github.repository }}/app:latest .
    - name: Push Docker Image to GHCR
      run: docker push ghcr.io/${{ github.repository }}/app:latest</code>
設置&gt;秘密和變量&gt;動作

並添加秘密,例如:

  • DOCKER_USERNAME
  • DOCKER_PASSWORD
對於GHCR而言,

秘密會自動提供並示為您的存儲庫。 GITHUB_TOKEN

步驟3:實施強大的標記策略

>使用github環境變量,例如

>和GITHUB_SHA進行有效版本:GITHUB_REF

<code class="language-yaml">name: Build and Push Docker Image
on:
  push:
    branches:
      - main
jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v4
    - name: Log in to GitHub Container Registry
      # Securely authenticate with GHCR
      run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
    - name: Build Docker Image
      # Build with 'latest' tag
      run: docker build -t ghcr.io/${{ github.repository }}/app:latest .
    - name: Push Docker Image to GHCR
      run: docker push ghcr.io/${{ github.repository }}/app:latest</code>
步驟4:通過緩存

優化構建速度

利用Docker的構建緩存以避免多餘的工作:

<code class="language-yaml">- name: Build Docker Image with Tags
  # Tag with 'latest' and unique commit SHA
  run: |
    IMAGE_NAME=ghcr.io/${{ github.repository }}/app
    docker build -t $IMAGE_NAME:latest -t $IMAGE_NAME:${{ github.sha }} .

- name: Push Docker Images with Tags
  run: |
    docker push ghcr.io/${{ github.repository }}/app:latest
    docker push ghcr.io/${{ github.repository }}/app:${{ github.sha }}</code>
解決共同挑戰

Mastering Docker Image Management with GitHub Actions and Container Registries

  • 身份驗證問題:驗證秘密和範圍。對於GHCR,請確保具有正確的權限。 GITHUB_TOKEN
  • 速率限制:使用具有較高限製或組織範圍內的Docker Hub帳戶的個人訪問令牌(PATS)。
  • 大圖:使用多階段構建,最小基礎圖像(例如高山)和刪除不必要的依賴關係來優化dockerfiles。
  • >
  • >調試: setACTIONS_STEP_DEBUG=true在存儲庫中的詳細記錄中。
  • >

探索未來趨勢

  • >軟件材料清單(SBOM):諸如Syft和Trivy之類的工俱生成SBOM,增強了供應鏈安全。
  • OCI合規性:確保跨不同平台的容器映像兼容性。
  • >>不變的基礎架構:降低漂移和一致性的容器的部署。 >
現實世界應用程序

>我使用github操作將Docker圖像部署到GHCR和Docker Hub的項目Travast(使用GO構建的作業門戶網站)。這種自動化大大提高了我們團隊的效率。

>遵循以下步驟,您可以自動化Docker Image Management。 從今天開始,簡化您的部署,並提高您的生產力。 如果您發現這個有用的話,請考慮支持我在KO-FI上的工作。

>

進一步閱讀

    > github操作文檔
  • Docker Hub註冊表
  • github容器註冊表
  • simft -sbom Generation >
  • Trivy-安全掃描

以上是使用GitHub操作和容器註冊表來掌握Docker Image Management的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn