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

Azure Container Instances를 통해 어떠한 가상 머신을 프로비전하지 않고 또 더 높은 수준의 서비스를 채택하지 않고도 Azure로 Docker 컨테이너를 배포할 수 있습니다. 이 자습서에서는 Azure Container Instances를 사용하여 실행할 수 있는 컨테이너 이미지에 작은 Node.js 웹 애플리케이션을 패키지합니다.

시리즈의 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 페이지를 제공하며, 다음 스크린샷과 비슷한 모습입니다.

브라우저에 표시된 자습서 앱

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

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

GitHub에서 직접 ZIP 아카이브를 다운로드할 수도 있습니다.

컨테이너 이미지 빌드

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

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 build 명령을 사용하여 컨테이너 이미지를 만들고 aci-tutorial-app이라는 태그를 지정합니다.

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

docker build 명령의 출력은 다음과 비슷합니다(가독성을 위해 잘림).

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 run 명령을 사용하여 로컬로 실행하여 정상적으로 작동하는지 확인합니다. -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 으로 이동하여 컨테이너가 실행 중인지 확인합니다. 다음과 비슷한 웹 페이지가 표시됩니다.

브라우저에서 앱을 로컬로 실행

다음 단계

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

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

이 시리즈의 다음 자습서로 이동하여 Azure Container Registry에 컨테이너 이미지를 저장하는 방법에 대해 알아보세요.