Container Registry 빠른 시작

Container Registry는 Google Cloud에서 실행되는 비공개 컨테이너 이미지 레지스트리입니다.

이 빠른 시작에서는 다음 방법을 보여줍니다.

  • Docker 이미지 만들기
  • 이미지를 프로젝트의 Container Registry로 내보내기
  • 이미지를 프로젝트의 Container Registry에서 가져오기

시작하기 전에

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Container Registry API를 사용 설정합니다.

    API 사용 설정

  5. Cloud SDK를 설치하고 초기화합니다.
  6. Docker를 설치합니다. Ubuntu나 Debian과 같은 Linux 기반 운영체제를 사용하는 경우 sudo를 사용하지 않고 Docker를 실행할 수 있도록 사용자 이름을 docker 그룹에 추가합니다.
    sudo usermod -a -G docker ${USER}

    그룹 멤버십 변경사항을 적용하려면 로그아웃했다가 다시 로그인합니다. 가상 머신을 사용할 경우 멤버십 변경 사항을 적용하려면 가상 머신을 다시 시작해야 할 수 있습니다.

  7. Docker를 엽니다. Docker가 실행 중인지 확인하려면 다음 Docker 명령어를 실행합니다. 현재 시간과 날짜가 반환됩니다.
  8. docker run busybox date

이 빠른 시작에서는 Cloud Shell이나, Cloud SDK가 설치된 환경을 사용하세요.

Docker 이미지 만들기

이 빠른 시작에서는 Container Registry로 내보낼 이미지를 얻기 위해 다음과 같은 Docker 이미지를 만듭니다. 이 Docker 이미지에는 작은 Python 웹 앱이 포함되어 있습니다. 이 앱은 Flask 웹 프레임워크를 이용해 'Hello, World!'라는 메시지를 표시하는 웹페이지를 제공합니다.

Docker 이미지를 생성하는 방법:

  1. Docker 이미지 파일 3개를 저장할 디렉터리를 만듭니다.

  2. 이 디렉터리에서 파일 세 개(Dockerfile, requirements.txt, app.py)를 만듭니다. 각 파일의 콘텐츠에 입력해야 하는 요소는 아래 예시를 참조하세요.

Dockerfile

# The file Dockerfile defines the image's environment
    # Import Python runtime and set up working directory
    FROM python:3.5-slim
    WORKDIR /app
    ADD . /app

    # Install any necessary dependencies
    RUN pip install -r requirements.txt

    # Open port 80 for serving the webpage
    EXPOSE 80

    # Run app.py when the container launches
    CMD ["python", "app.py"]
    

requirements.txt

# The file requirements.txt defines the image's dependencies
    Flask
    

app.py

# The Docker image contains the following code in app.py
    from flask import Flask
    import os
    import socket

    app = Flask(__name__)

    @app.route("/")
    def hello():
        html = "<h3>Hello, World!</h3>"
        return html

    if __name__ == "__main__":
      app.run(host='0.0.0.0', port=80)
    

Docker 이미지를 만들려면 이미지의 파일이 있는 디렉터리에서 다음 Docker 명령어를 실행하세요.

docker build -t quickstart-image .
    

이제 로컬 머신에 Docker 이미지가 생성되었습니다.

이미지를 Container Registry에 추가하기

gcloud 명령줄 도구를 사용자 인증 정보 도우미로 사용하도록 docker 구성

이미지를 내보내거나 가져오려면 먼저 Docker가 Container Registry에 대한 요청을 인증하는 데 gcloud 명령줄 도구를 사용하도록 구성해야 합니다. 이를 위해서 다음 명령어를 실행하세요. 한 번만 실행하면 됩니다.

gcloud auth configure-docker
    

레지스트리 이름으로 이미지에 태그 지정

Docker 이미지를 Container Registry로 내보내려면 먼저 레지스트리 이름으로 이미지에 태그를 지정해야 합니다. Docker 이미지에 레지스트리 이름으로 태그를 지정하면 docker push 명령어가 이미지를 특정 위치로 내보내도록 구성됩니다. 이 빠른 시작에서 호스트 위치는 gcr.io입니다.

Docker 이미지에 태그를 지정하려면 다음 명령어를 실행하세요.

docker tag quickstart-image gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

각 항목의 의미는 다음과 같습니다.

  • [PROJECT-ID]는 Google Cloud Console 프로젝트 ID이며, 이 ID를 명령어에 추가해야 합니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • gcr.io는 호스트 이름입니다.
  • quickstart-image는 Docker 이미지의 이름입니다.
  • tag1은 Docker 이미지에 추가할 태그입니다. 태그를 지정하지 않으면 기본 태그인 latest가 적용됩니다.

이제 이미지를 Container Registry로 내보내면 됩니다.

이미지를 Container Registry로 내보내기

dockergcloud를 사용자 인증 정보 도우미로 사용하도록 구성되고 로컬 이미지에 레지스트리 이름으로 태그가 지정되었으면 이 이미지를 Container Registry로 내보낼 수 있습니다.

Docker 이미지를 내보내려면 다음 명령어를 실행하세요.

docker push gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

여기서 [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.

이미지를 새 호스트 위치로 내보내면 서비스는 프로젝트별로 고유한 기본 스토리지 버킷을 만듭니다. Cloud Console을 통해 또는 웹브라우저에서 이미지의 레지스트리 이름(http://gcr.io/[PROJECT-ID]/quickstart-image)으로 이동하면 Container Registry에서 호스팅하는 이미지를 볼 수 있습니다.

Container Registry에서 이미지 가져오기

Container Registry에서 로컬 머신으로 이미지를 가져오려면 다음 명령어를 실행합니다.

docker pull gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

여기서 [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.

다음과 비슷한 출력이 표시됩니다.

latest: Pulling from [PROJECT-ID]/quickstart-image:tag1
    Digest: sha256:70c42...
    Status: Image is up to date for gcr.io/[PROJECT-ID]/quickstart-image:tag1
    

삭제

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

다음 명령어를 실행하여 Container Registry에서 Docker 이미지를 삭제합니다.

gcloud container images delete gcr.io/[PROJECT-ID]/quickstart-image:tag1 --force-delete-tags
    

여기서 [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.

다음 단계