자습서: Azure Container Instances에 배포하기 위한 컨테이너 이미지 만들기

Azure Container Instances를 사용하면 가상 머신을 프로비전하거나 상위 수준 서비스를 채택하지 않고도 Azure 인프라에 Docker 컨테이너를 배포할 수 있습니다. 이 자습서에서는 작은 Node.js 웹 애플리케이션을 Azure Container Instances를 사용하여 실행할 수 있는 컨테이너 이미지로 패키지합니다.

시리즈의 1부인 이 문서에서는 다음을 수행합니다.

  • GitHub에서 애플리케이션 소스 코드 복제
  • 애플리케이션 원본에서 컨테이너 이미지 만들기
  • 로컬 Docker 환경에서 이미지 테스트

자습서 2부와 3부에서는 Azure Container Registry에 이미지를 업로드한 다음 Azure Container Instances에 배포합니다.

시작하기 전에

이 자습서를 완료하려면 다음 요구 사항을 충족해야 합니다.

Azure CLI: 로컬 컴퓨터에 Azure CLI 버전 2.0.29 이상이 설치되어 있어야 합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드가 필요한 경우, Azure CLI 설치를 참조하세요.

Docker: 이 자습서에서는 컨테이너, 컨테이너 이미지 및 기본 명령과 같은 핵심 Docker 개념에 대한 기본적인 docker 이해를 가정합니다. Docker 및 컨테이너에 대한 기본 사항은 Docker 개요를 참조하세요.

Docker: 이 자습서를 완료하려면 Docker를 로컬로 설치해야 합니다. Docker는 macOS, WindowsLinux에서 Docker 환경을 구성하는 패키지를 제공합니다.

Important

Azure Cloud Shell에는 Docker 디먼이 포함되어 있지 않으므로 이 자습서를 완료하려면 로컬 컴퓨터에 Azure CLI와 Docker 엔진을 모두 설치해야 합니다. 이 자습서에는 Azure Cloud Shell을 사용할 수 없습니다.

애플리케이션 코드 가져오기

이 자습서의 샘플 애플리케이션은 Node.js 기본 제공되는 간단한 웹앱입니다. 이 애플리케이션은 정적 HTML 페이지를 제공하며, 다음 스크린샷과 비슷한 모습입니다.

Tutorial app shown in browser

Git을 사용하여 애플리케이션 예제의 리포지토리를 복제합니다.

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

GitHub에서 직접 ZIP 보관 파일을 다운로드할 수도 있습니다.

컨테이너 이미지 빌드

샘플 애플리케이션의 Dockerfile은 컨테이너가 빌드되는 방법을 보여줍니다. 컨테이너에 사용하기에 적합한 소규모 배포판인 Alpine Linux를 기반으로 하는 공식 Node.js 이미지에서 시작됩니다. 그런 다음, 애플리케이션 파일을 컨테이너에 복사하고, Node 패키지 관리자 사용하여 종속성을 설치하고, 마지막으로 애플리케이션을 시작합니다.

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

Docker 빌드 명령을 사용하여 컨테이너 이미지를 만들고 aci-tutorial-app으로 태그를 지정합니다.

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

Docker 빌드 명령의 출력은 다음과 유사합니다(가독성을 위해 잘림).

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

빌드된 이미지를 보려면 다음과 같이 docker images 명령을 사용합니다.

docker images

새로 빌드된 이미지가 목록에 표시됩니다.

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

컨테이너를 로컬로 실행

Azure Container Instances에 컨테이너를 배포하기 전에 Docker 실행을 사용하여 로컬로 실행하고 작동하는지 확인합니다. -d 스위치를 통해 컨테이너를 백그라운드로 실행할 수 있으며 -p를 통해 컴퓨터의 임의 포트를 컨테이너의 포트 80에 매핑할 수 있습니다.

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

명령의 출력은 docker run 명령이 성공한 경우 실행 중인 컨테이너의 ID를 표시합니다.

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

이제 브라우저로 이동하여 http://localhost:8080 컨테이너가 실행 중인지 확인합니다. 다음과 유사한 웹 페이지가 표시됩니다.

Running the app locally in the browser

다음 단계

이 자습서에서는 Azure Container Instances에 배포할 수 있는 컨테이너 이미지를 만들고 로컬로 실행되는지 확인했습니다. 지금까지 다음을 수행했습니다.

  • GitHub에서 애플리케이션 원본 복제
  • 애플리케이션 원본에서 컨테이너 이미지 만들기
  • 컨테이너를 로컬로 테스트했습니다.

Azure Container Registry에 컨테이너 이미지를 저장하는 방법을 알아보려면 시리즈의 다음 자습서로 이동합니다.