Samouczek: tworzenie obrazu kontenera do wdrożenia w celu Azure Container Instances

Usługa Azure Container Instances umożliwia wdrażanie kontenerów Docker w infrastrukturze platformy Azure bez aprowizowania maszyn wirtualnych ani adaptowania usług wyższego poziomu. Podczas pracy z tym samouczkiem spakujesz małą aplikację internetową środowiska Node.js do obrazu kontenera, który można uruchomić za pomocą usługi Azure Container Instances.

W tym artykule, który jest pierwszą częścią trzyczęściowej serii, wykonasz następujące działania:

  • Klonowanie kodu źródłowego aplikacji z usługi GitHub
  • Tworzenie obrazu kontenera ze źródła aplikacji
  • Testowanie obrazu w lokalnym środowisku Docker

Podczas pracy z częścią drugą i trzecią samouczka przekażesz obraz do usługi Azure Container Registry, a następnie wdrożysz go w usłudze Azure Container Instances.

Zanim rozpoczniesz

Aby ukończyć ten samouczek, musisz spełniać następujące wymagania:

Interfejs wiersza polecenia platformy Azure: musisz mieć interfejs wiersza polecenia platformy Azure w wersji 2.0.29 lub nowszej zainstalowany na komputerze lokalnym. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Docker: ten samouczek zakłada, że masz podstawową wiedzę na temat najważniejszych pojęć usługi Docker, takich jak kontenery, obrazy kontenera i podstawowe polecenia docker. Aby uzyskać podstawowe informacje na temat platformy Docker i kontenerów, zapoznaj się z artykułem Docker overview (Przegląd platformy Docker).

Docker: aby ukończyć ten samouczek, musisz zainstalować platformę Docker lokalnie. Platforma Docker udostępnia pakiety, które konfigurują środowisko platformy Docker w systemach macOS, Windows i Linux.

Ważne

Ponieważ usługa Azure Cloud Shell nie zawiera demona platformy Docker, w celu ukończenia tego samouczka musisz zainstalować na swoim komputerze lokalnym wiersz polecenia platformy Azure i aparat platformy Docker. W tym samouczku nie możesz korzystać z usługi Azure Cloud Shell.

Pobieranie kodu aplikacji

Przykład aplikacji podany w tym samouczku obejmuje prostą aplikację internetową utworzoną za pomocą oprogramowania Node.js. Aplikacja służy za statyczną stronę HTML i wygląda podobnie do poniższego zrzutu ekranu:

Samouczek aplikacji wyświetlony w przeglądarce

Użyj narzędzia Git, aby sklonować repozytorium przykładowej aplikacji:

git clone https://github.com/Azure-Samples/aci-helloworld.git

Możesz też pobrać archiwum ZIP bezpośrednio z usługi GitHub.

Kompilowanie obrazu kontenera

Plik Dockerfile w przykładowej aplikacji przedstawia sposób tworzenia kontenera. Praca rozpoczyna się od oficjalnego obrazu oprogramowania Node.js opartego na systemie Alpine Linux, małej dystrybucji, która dobrze nadaje się do korzystania z kontenerów. Kolejny krok to skopiowanie plików aplikacji do kontenera, zainstalowanie zależności za pomocą programu Node Package Manager i na koniec uruchomienie aplikacji.

FROM node:8.9.3-alpine
RUN mkdir -p /usr/src/app
COPY ./app/* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
CMD node /usr/src/app/index.js

Użyj polecenia docker build, aby utworzyć obraz kontenera, a następnie otaguj go jako aci-tutorial-app:

docker build ./aci-helloworld -t aci-tutorial-app

Dane wyjściowe polecenia docker build są podobne do następujących (tutaj obcięto je dla zwiększenia czytelności):

docker build ./aci-helloworld -t aci-tutorial-app
Sending build context to Docker daemon  119.3kB
Step 1/6 : FROM node:8.9.3-alpine
8.9.3-alpine: Pulling from library/node
88286f41530e: Pull complete
84f3a4bf8410: Pull complete
d0d9b2214720: Pull complete
Digest: sha256:c73277ccc763752b42bb2400d1aaecb4e3d32e3a9dbedd0e49885c71bea07354
Status: Downloaded newer image for node:8.9.3-alpine
 ---> 90f5ee24bee2
...
Step 6/6 : CMD node /usr/src/app/index.js
 ---> Running in f4a1ea099eec
 ---> 6edad76d09e9
Removing intermediate container f4a1ea099eec
Successfully built 6edad76d09e9
Successfully tagged aci-tutorial-app:latest

Użyj polecenia docker images, aby wyświetlić utworzony obraz:

docker images

Nowo utworzony obraz powinien zostać wyświetlony na liście:

docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 seconds ago    68.1 MB

Uruchamianie kontenera w środowisku lokalnym

Przed wdrożeniem kontenera w usłudze Azure Container Instances użyj polecenia docker run, aby uruchomić go lokalnie i sprawdzić, czy działa. Przełącznik -d umożliwia uruchamianie kontenera w tle, a element -p — mapowanie dowolnego portu komputera do portu 80 w kontenerze.

docker run -d -p 8080:80 aci-tutorial-app

Dane wyjściowe z polecenia docker run wyświetlają identyfikator uruchomionego kontenera, jeśli polecenie zakończyło się pomyślnie:

docker run -d -p 8080:80 aci-tutorial-app
```output
a2e3e4435db58ab0c664ce521854c2e1a1bda88c9cf2fcff46aedf48df86cccf

Teraz przejdź do adresu http://localhost:8080 w przeglądarce, aby potwierdzić, że kontener działa. Powinna zostać wyświetlona strona internetowa podobna do poniższej:

Uruchamianie aplikacji lokalnie w przeglądarce

Następne kroki

Podczas pracy z samouczkiem utworzono obraz kontenera, który można wdrożyć w usłudze Azure Container Instances i zweryfikować jego działanie lokalnie. Jak dotąd wykonano następujące czynności:

  • Klonowanie źródła aplikacji z usługi GitHub
  • Tworzenie obrazu kontenera ze źródła aplikacji
  • Testowanie kontenera w środowisku lokalnym

Przejdź do kolejnego samouczka w serii, aby dowiedzieć się więcej o przechowywaniu obrazów kontenera w usłudze Azure Container Registry: