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.
W projekcie usługi Azure DevOps wybierz pozycję Ustawienia projektu>Połączenia usługi.
Wybierz pozycję Nowe połączenie usługi i Rejestr Dockera.
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. 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.
W projekcie usługi Azure DevOps wybierz pozycję Pipelines i Nowy potok.
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.
Wybierz repozytorium.
Wybierz szablon Potok początkowy, aby utworzyć podstawową konfigurację potoku.
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'
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.
- Zastąp
Po zakończeniu wybierz opcję Zapisz i uruchom>Zapisz i uruchom.
Wybierz pozycję Zadanie, aby wyświetlić dzienniki i sprawdzić, czy potok został uruchomiony pomyślnie.
Przejdź do projektu usługi Azure DevOps i wybierz pozycję Pipelines z menu po lewej stronie.
Wybierz pozycję Nową rurę.
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.
Wybierz szablon Docker — Utwórz i prześlij obraz do Azure Container Registry.
Wybierz subskrypcję usługi Azure i Kontynuuj.
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)
Wybierz pozycję Zapisz i uruchom ponownie i Zapisz i uruchom.
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ń.