Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services
Z tego przewodnika Szybki start dowiesz się, jak utworzyć obraz kontenera na potrzeby wdrażania aplikacji przy użyciu usługi Azure Pipelines. Aby skompilować ten obraz, potrzebujesz tylko pliku Dockerfile w repozytorium. Można tworzyć kontenery dla systemu Linux lub Windows, w zależności od agenta używanego w potoku.
Wymagania wstępne
Kategoria | Wymagania |
---|---|
Azure DevOps | — projekt usługi Azure DevOps. — Możliwość uruchamiania pipeline'ów na agentach hostowanych przez firmę Microsoft. Możesz kupić zadanie równoległe lub poprosić o bezpłatny poziom. — Podstawowa wiedza na temat języka YAML i usługi Azure Pipelines. Aby uzyskać więcej informacji, zobacz Tworzenie pierwszego pipeline'u. Uprawnienia: - Aby utworzyć potok, użytkownicy muszą znajdować się w grupie Kontrybutorzy, a grupa musi mieć uprawnienie Budowanie potoku ustawione na wartość Zezwalaj. Członkowie grup Administratorzy Kompilacji i Administratorzy Projektu mogą również zarządzać potokami. |
Usługa GitHub | — Konto GitHub . — Połączenie usługi GitHub w celu autoryzowania usługi Azure Pipelines. |
Błękit | Subskrypcja platformy Azure. |
Zrób fork przykładowego repozytorium
W przeglądarce przejdź do następującego przykładowego repozytorium i sforkuj je na swoim koncie GitHub.
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Tworzenie obrazu systemu Linux lub Windows
Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.
Przejdź do obszaru Potoki i wybierz pozycję Nowy potok lub Utwórz potok , jeśli utworzysz pierwszy potok w projekcie.
Wybierz pozycję GitHub jako lokalizację kodu źródłowego.
Wybierz repozytorium, a następnie wybierz pozycję Potok startowy.
- 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.
Zastąp zawartość azure-pipelines.yml następującym kodem. W zależności od tego, czy wdrażasz aplikację na Linuxa czy Windowsa, ustaw
vmImage
naubuntu-latest
lubwindows-latest
.trigger: - main pool: vmImage: 'ubuntu-latest' variables: imageName: 'pipelines-javascript-docker' steps: - task: Docker@2 displayName: Build an image inputs: repository: $(imageName) command: build Dockerfile: app/Dockerfile
Po zakończeniu wybierz pozycję Zapisz i uruchom.
Po dodaniu pliku azure-pipelines.yml do repozytorium zostanie wyświetlony monit o dodanie komunikatu zatwierdzenia. Wprowadź komunikat, a następnie wybierz pozycję Zapisz i uruchom.
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ń.
Aby skompilować obraz, platforma Docker musi być zainstalowana na hoście agenta, a aparat/demon platformy Docker musi być uruchomiony z podwyższonym poziomem uprawnień. Wykonaj poniższe kroki, aby utworzyć potok przy użyciu edytora potoku YAML.
- Przejdź do kolekcji i utwórz projekt.
- W projekcie wybierz pozycję Rurociągi.
- Wybierz pozycję Utwórz potok.
- Wybierz pozycję GitHub Enterprise Server jako lokalizację kodu źródłowego.
- Jeśli jeszcze tego nie zrobiono, autoryzuj usługę Azure Pipelines do nawiązania połączenia z kontem usługi GitHub Enterprise Server.
- Wybierz pozycję Połącz z serwerem GitHub Enterprise Server.
- Wprowadź szczegóły konta, a następnie wybierz pozycję Weryfikuj i zapisz.
- Wybierz repozytorium. Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
- Aby skonfigurować potok, wybierz szablon Zbuduj obraz Docker.
- W edytorze potoku YAML zastąp zawartość pliku YAML następującym kodem. Zastąp nazwę puli nazwą puli, która zawiera własnego agenta z możliwością używania Dockera.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
trigger:
- main
pool:
name: default
demands: docker
variables:
imageName: 'pipelines-javascript-docker'
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'
- Wybierz pozycję Zapisz i uruchom.
- Na stronie Zapisywanie i uruchamianie wybierz pozycję Zapisz i uruchom ponownie.
Aby uzyskać więcej informacji na temat kompilowania obrazów platformy Docker, zobacz zadanie platformy Docker używane przez tę przykładową aplikację. Można również bezpośrednio wywoływać polecenia platformy Docker przy użyciu zadania wiersza polecenia.
Obrazy kontenerów są kompilowane i przechowywane na agencie. Wypchnij obraz do usługi Google Container Registry, Docker Hub lub Azure Container Registry. Aby uzyskać więcej informacji, zobacz Wypychanie obrazu do usługi Docker Hub lub Google Container Registry lub Wypychanie obrazu do usługi Azure Container Registry.
Czyszczenie zasobów
Jeśli nie planujesz dalej korzystać z tej aplikacji, usuń potok danych oraz repozytorium kodu.
Często zadawane pytania
Jakich agentów mogę użyć do kompilowania obrazów kontenerów?
Obrazy kontenerów systemu Linux można kompilować przy użyciu agentów systemu Ubuntu hostowanych przez firmę Microsoft lub własnych agentów opartych na platformie Linux.
Obrazy kontenerów systemu Windows można kompilować przy użyciu agentów systemu Windows hostowanych przez firmę Microsoft lub własnych agentów opartych na platformie Windows. Wszystkie agenty działające na platformie Windows, hostowane przez firmę Microsoft, są wyposażone w silnik Moby i klienta niezbędnymi do kompilacji Docker.
Nie można używać agentów macOS hostowanych przez firmę Microsoft do tworzenia obrazów kontenerów, ponieważ silnik Moby wymagany do budowania obrazów nie jest wstępnie zainstalowany na tych agentach.
Aby uzyskać więcej informacji, zobacz opcje agentów systemów Windows i Linux dostępne w przypadku agentów hostowanych przez firmę Microsoft.
Jakie wstępnie zbuforowane obrazy platformy Docker są dostępne na hostowanych agentach?
Aby zaoszczędzić czas potrzebny na pobieranie obrazów Docker podczas każdej pracy z rejestru kontenerów, niektóre często używane obrazy są przechowywane z wyprzedzeniem na agentach hostowanych przez Microsoft.
Jak mogę ustawić zmienną BuildKit dla kompilacji platformy Docker?
BuildKit wprowadza ulepszenia budowania dotyczące wydajności, zarządzania pamięcią, funkcjonalności funkcji i zabezpieczeń. Zestaw BuildKit nie jest obecnie obsługiwany na hostach systemu Windows.
Aby włączyć kompilacje platformy Docker przy użyciu zestawu BuildKit, ustaw zmienną DOCKER_BUILDKIT .
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
imageName: 'pipelines-javascript-docker'
DOCKER_BUILDKIT: 1
steps:
- task: Docker@2
displayName: Build an image
inputs:
repository: $(imageName)
command: build
Dockerfile: app/Dockerfile
Jak mogę użyć samodzielnie hostowanego agenta?
Platforma Docker musi być zainstalowana, a silnik lub demon uruchomiony na hoście agenta. Jeśli platforma Docker nie jest zainstalowana, dodaj zadanie instalatora platformy Docker do potoku. Dodaj zadanie Instalatora platformy Docker przed zadaniem platformy Docker.
Jak utworzyć kompilację platformy Docker opartą na skrycie zamiast przy użyciu zadania platformy Docker?
Możesz użyć polecenia build
lub dowolnego innego polecenia platformy Docker.
docker build -f Dockerfile -t foobar.azurecr.io/hello:world .
To polecenie tworzy obraz odpowiadający jednemu skompilowanemu za pomocą zadania platformy Docker. Wewnętrznie zadanie Dockera wywołuje plik binarny Dockera na skrypcie i łączy szereg kolejnych poleceń, aby zapewnić kilka dodatkowych korzyści. Dowiedz się więcej o zadaniu platformy Docker.
Czy mogę ponownie używać buforowania warstw podczas kompilacji w usłudze Azure Pipelines?
Jeśli używasz agentów hostowanych przez Microsoft, każde zadanie jest wysyłane do nowo aprowizowanej maszyny wirtualnej, której obraz został wygenerowany na podstawie szablonów repozytorium azure-pipelines-image-generation. Te maszyny wirtualne są czyszczone po zakończeniu zadania. Ta efemeryczna żywotność zapobiega ponownemu używaniu tych maszyn wirtualnych w kolejnych zadaniach i ponownemu używaniu buforowanych warstw platformy Docker. Aby obejść ten problem, można skonfigurować wieloetapową kompilację, która tworzy dwa obrazy i wypycha je do rejestru obrazów na wczesnym etapie. Następnie możesz poinformować platformę Docker o użyciu tych obrazów jako źródła pamięci podręcznej z argumentem --cache-from
.
Jeśli używasz własnoręcznie hostowanych agentów, możesz buforować warstwy Docker bez stosowania obejść, ponieważ problem krótkotrwałości cyklu życia nie ma zastosowania do tych agentów.
Jak mogę skompilować obrazy kontenerów systemu Linux dla architektur innych niż x64?
W przypadku korzystania z agentów systemu Linux hostowanych przez firmę Microsoft tworzone są obrazy kontenerów systemu Linux dla architektury x64. Aby utworzyć obrazy dla innych architektur, takich jak x86 lub procesor ARM, można użyć emulatora maszyny, takiego jak QEMU.
Wykonaj następujące kroki, aby utworzyć obraz kontenera procesora ARM przy użyciu interfejsu QEMU:
Utwórz plik Dockerfile przy użyciu obrazu podstawowego zgodnego z architekturą docelową:
FROM arm64v8/alpine:latest
Uruchom następujący skrypt w swojej pracy przed zbudowaniem obrazu.
# register QEMU binary - this can be done by running the following image docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # build your image
Aby uzyskać więcej informacji, zobacz qemu-user-static w witrynie GitHub.
Jak mogę uruchomić testy i opublikować wyniki testów dla konteneryzowanych aplikacji?
Aby zapoznać się z opcjami testowania konteneryzowanych aplikacji i publikowania wyników testów, zobacz Publikowanie wyników testu zadania.
Następne kroki
Po utworzeniu obrazu kontenera wypchnij obraz do usługi Azure Container Registry, Docker Hub lub Google Container Registry. Aby dowiedzieć się, jak przesłać obraz do rejestru kontenerów, zobacz albo jeden z następujących artykułów: