Udostępnij za pośrednictwem


Tworzenie i wypychanie obrazów kontenerów do rejestrów za pomocą usługi Azure Pipelines

Azure DevOps Services

Ten artykuł przeprowadzi Cię przez tworzenie przepływu pracy, aby zbudować i wypchnąć obraz Docker do Azure Container Registry lub Docker Hub.

Wymagania wstępne

produkt Wymagania
Usługi Azure DevOps projekt usługi Azure DevOps.
Uprawnienia: -
    - Aby udzielić dostępu do wszystkich linii w projekcie: musisz być członkiem Grupy Administratorzy Projektu .
    — Aby utworzyć połączenia usług: musisz mieć rolę Administrator lub Twórca dla połączeń usług .
— Jeśli używasz własnego agenta, upewnij się, że Docker jest zainstalowany, a silnik Docker jest uruchomiony z podwyższonym poziomem uprawnień. Agenci hostowani przez firmę Microsoft mają wstępnie zainstalowaną platformę Docker.
GitHub — Konto GitHub .
— Repozytorium GitHub z plikiem Dockerfile. Jeśli nie masz własnego projektu, użyj przykładowego repozytorium .
Połączenie usługi GitHub do autoryzowania usługi Azure Pipelines.
Błękit - Subskrypcja platformy Azure .
— Jeden z rejestrów kontenerów Azure.
produkt Wymagania
Usługi Azure DevOps projekt usługi Azure DevOps.
Uprawnienia: -
    - Aby udzielić dostępu do wszystkich linii w projekcie: musisz być członkiem Grupy Administratorzy Projektu .
    — Aby utworzyć połączenia usług: musisz mieć rolę Administrator lub Twórca dla połączeń usług .
— Jeśli używasz własnego agenta, upewnij się, że Docker jest zainstalowany, a silnik Docker jest uruchomiony z podwyższonym poziomem uprawnień. Agenci hostowani przez firmę Microsoft mają wstępnie zainstalowaną platformę Docker.
GitHub — Konto GitHub .
— Repozytorium GitHub z plikiem Dockerfile. Jeśli nie masz własnego projektu, użyj przykładowego repozytorium .
Połączenie usługi GitHub do autoryzowania usługi Azure Pipelines.
Docker Hub — Konto usługi Docker Hub.
— Repozytorium obrazów Docker Hub.

Utwórz połączenie z rejestrem usługi Docker

Przed wypychaniem obrazów kontenerów do rejestru należy utworzyć połączenie usługi w usłudze Azure DevOps. To połączenie z usługą przechowuje poświadczenia wymagane do bezpiecznego uwierzytelniania w rejestrze kontenerów. Aby uzyskać więcej informacji, zobacz połączenia z usługą Docker Registry.

  1. W projekcie usługi Azure DevOps wybierz pozycję Ustawienia projektu>Połączenia usługi.

    Zrzut ekranu przedstawiający wybór ustawień projektu.

  2. Wybierz pozycję Nowe połączenie usługi i Rejestr Dockera.

    zrzut ekranu przedstawiający wybór rejestru platformy Docker.

  3. Wybierz docker Hub i wprowadź następujące informacje:

    Pole Opis
    identyfikatora platformy Docker Wprowadź identyfikator platformy Docker.
    Hasło Docker Wprowadź hasło platformy Docker.
    nazwa połączenia usługi Wprowadź nazwę połączenia z usługą.
    Przyznaj zezwolenia dostępu do wszystkich potoków Wybierz tę opcję, aby udzielić dostępu do wszystkich potoków.

    zrzut ekranu przedstawiający okno dialogowe połączenia usługi Docker Hub.

  4. Wybierz pozycję Sprawdź i zapisz.

Utwórz potok do budowania i wypychania obrazu Docker

Zadanie Docker@2 służy do kompilowania i wypychania obrazu do rejestru kontenerów. Zadanie Docker@2 zostało zaprojektowane w celu usprawnienia procesu tworzenia, wypychania i zarządzania obrazami platformy Docker w usłudze Azure Pipelines. To zadanie obsługuje szeroką gamę poleceń platformy Docker, w tym kompilowanie, wypychanie, logowanie, wylogowywanie, uruchamianie, zatrzymywanie i uruchamianie.

Wykonaj poniższe kroki, aby utworzyć potok YAML, który używa zadania Docker@2 do skompilowania i wypchnięcia obrazu.

  1. W projekcie usługi Azure DevOps wybierz pozycję Pipelines i Nowy potok.

  2. Wybierz GitHub jako lokalizację kodu źródłowego i wybierz repozytorium.

    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zalogowania się, wprowadź swoje poświadczenia usługi GitHub.
    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
  3. Wybierz repozytorium.

  4. Wybierz szablon Potok początkowy, aby utworzyć podstawową konfigurację potoku.

  5. Zastąp zawartość azure-pipelines.yml następującym kodem:

    
    trigger:
    - main
    
    pool:
      vmImage: 'ubuntu-latest' 
    
    variables:
      repositoryName: '<target repository name>' 
    
    steps:
    - task: Docker@2
      inputs:
        containerRegistry: '<docker registry service connection>'
        repository: $(repositoryName)
        command: 'buildAndPush'
        Dockerfile: '**/Dockerfile'
    
    
  6. Edytuj plik YAML potoku w następujący sposób:

    • Zastąp <target repository name> ciąg nazwą repozytorium w rejestrze kontenerów, w którym chcesz wypchnąć obraz.
    • Zastąp <docker registry service connection> nazwą utworzonego wcześniej połączenia usługi rejestru platformy Docker.
  7. Po zakończeniu wybierz opcję Zapisz i uruchom>Zapisz i uruchom.

  8. Wybierz pozycję Zadanie, aby wyświetlić dzienniki i sprawdzić, czy potok został uruchomiony pomyślnie.

  1. Przejdź do projektu usługi Azure DevOps i wybierz pozycję Pipelines z menu po lewej stronie.

  2. Wybierz pozycję Nową rurę.

  3. Wybierz GitHub jako lokalizację kodu źródłowego i wybierz repozytorium.

    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zalogowania się, wprowadź swoje poświadczenia usługi GitHub.
    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
  4. Wybierz szablon Docker — Utwórz i prześlij obraz do Azure Container Registry.

  5. Wybierz subskrypcję usługi Azure i Kontynuuj.

  6. Wybierz rejestr kontenerów, a następnie wybierz pozycję Weryfikuj i skonfiguruj.

    Przykładowy potok YAML:

    # Docker
    # Build and push an image to Azure Container Registry
    # https://docs.microsoft.com/azure/devops/pipelines/languages/docker
    
    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
      # Container registry service connection established during pipeline creation
      dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de'
      imageRepository: 'usernamepipelinesjavascriptdocker'
      containerRegistry: 'repoistoryname.azurecr.io'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
      # Agent VM image name
      vmImageName: 'ubuntu-latest'
    
    stages:
    - stage: Build
      displayName: Build and push stage
      jobs:
      - job: Build
        displayName: Build
        pool:
          vmImage: $(vmImageName)
        steps:
        - task: Docker@2
          displayName: Build and push an image to container registry
          inputs:
            command: buildAndPush
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
              $(tag)
    
    
  7. Wybierz pozycję Zapisz i uruchom ponownie i Zapisz i uruchom.

  8. Wybierz pozycję Zadanie, aby wyświetlić dzienniki i zweryfikować, czy potok został uruchomiony pomyślnie.

Szablon Docker tworzy połączenie usługi z Azure Container Registry i używa zadania Docker@2 do zbudowania i wysłania obrazu Docker do rejestru.

Zadanie Docker@2 zostało zaprojektowane w celu usprawnienia procesu tworzenia, wypychania i zarządzania obrazami platformy Docker w usłudze Azure Pipelines. To zadanie obsługuje szeroką gamę poleceń platformy Docker, w tym kompilowanie, wypychanie, logowanie, wylogowywanie, uruchamianie, zatrzymywanie i uruchamianie.

W przypadku korzystania z własnych agentów upewnij się, że platforma Docker jest zainstalowana na hoście agenta, a aparat/demon platformy Docker jest uruchomiony z podwyższonym poziomem uprawnień.