다음을 통해 공유


Linux 컨테이너 이미지 만들기 및 배포

이 기사에서는 Linux 컨테이너 이미지를 만들고 배포하는 데 도움이 되는 구체적인 단계를 간략하게 설명합니다.

VM 만들기에 설명된 대로 서비스를 사용할 때 예산 및 수요에 따라 VM을 전역적으로 게임 서버로 자동으로 스핀업하도록 구성합니다. 이렇게 하려면 VM을 명시적으로 만들지 않고 대신 VM을 만드는 방법을 결정하는 매개 변수를 정의합니다. 이 프로세스를 빌드 배포 또는 만들기라고 합니다.

PlayFab 멀티 플레이어 서버는 Linux 기반 및 Windows 기반 게임 서버를 모두 배포할 수 있습니다. Linux 컨테이너에 빌드를 배포하는 방법은 몇 가지 중요한 차이점이 있는 Windows 컨테이너와 비슷합니다. 자세한 내용은 Windows 및 Linux 컨테이너 이미지 차이를 참조하세요. PowerShell/API를 사용하여 Linux 컨테이너를 관리하려면 API를 사용하여 Linux 컨테이너 이미지 관리를 참조하세요.

관리되는 컨테이너 이미지를 사용하는 대신 Linux 기반 게임 서버를 사용하는 경우 컨테이너 이미지를 만들고 컨테이너 레지스트리에 업로드해야 합니다. 컨테이너를 쉽게 업로드할 수 있도록 계정에 Azure 컨테이너 레지스트리가 제공됩니다.

필수 지식

Windows 개발 디바이스 설정

이 단계는 Windows 개발 디바이스를 사용하여 Linux 컨테이너 이미지를 만들려는 경우에만 필요합니다. 또는 Docker가 설치된 Linux OS 디바이스, VM 또는 이중 OS 시스템을 사용할 수 있습니다.

WSL(Linux용 Windows 하위 시스템)을 사용하면 익숙한 Windows 환경에서 개발 디바이스를 사용하여 Linux 컨테이너 이미지를 작성하고 관리할 수 있습니다. WSL을 사용하면 기존 Linux 가상 머신 또는 이중 부팅 설정의 오버헤드가 필요하지 않습니다.

  1. WSL 2를 설치합니다. 컴퓨터를 다시 시작했고 WSL 2를 사용하고 있는지 확인합니다. 또한 Linux 커널 업데이트 패키지를 성공적으로 설치해야 합니다.
  2. WSL을 사용하는 Linux 배포를 설치합니다. VM은 Ubuntu를 사용하지만 컨테이너 이미지에 대해 원하는 배포를 선택할 수 있습니다. Ubuntu 20.04 LTS 이상 버전을 사용하는 것이 좋습니다.
  3. WSL 2이 있는 Windows용 Docker 데스크톱을 설치합니다. 직접 다운로드 링크를 보려면 Windows용 Docker 데스크톱(외부)로 이동하세요.

WSL 2 설정 확인

  • PowerShell 열기
  • wsl -l -v를 실행하여 docker-데스크톱 및 ubuntu 애플리케이션이 모두 WSL 2(버전 2)를 실행하고 있는지 확인합니다.

WSL에 대해 Docker가 올바르게 설정되었는지 확인

  • WSL 터미널 열기
  • Docker 버전을 실행하여 Docker가 설치되어 있고 사용되는 OS가 Linux인지 확인합니다.

Linux C++ 애플리케이션을 개발하고 디버깅하려면 Visual Studio 2019의 WSL을 사용합니다.

PlayFab 컨테이너 레지스트리 로그인 자격 증명 가져오기

Azure 컨테이너 레지스트리 계정은 PlayFab 계정과 연결됩니다. 업로드된 컨테이너에 대한 액세스 권한만 있습니다. 이 Azure 컨테이너 레지스트리는 무료입니다.

  • 게임 관리자에서 게임 타이틀을 선택한 다음 멀티 플레이어>서버를 선택합니다. 그런 다음 오른쪽에서 새 빌드를 선택하여 빌드 만들기 페이지를 엽니다.
  • 가상 머신 운영 체제로 Linux를 선택합니다.
  • 이 정보는 나중에 필요하므로 로그인 자격 증명 이름, 암호 및 customer5555555.azurecr.io를 기록해 둡니다.

Linux 플랫폼이 선택된 새 빌드

PowerShell/API를 사용하려면 GetContainerRegistryCredentials API를 호출하여 컨테이너 레지스트리 주소, 사용자 이름 및 암호를 검색합니다.

Linux 컨테이너 이미지를 만들고 Azure Container Registry로 푸시합니다.

이러한 단계는 사용자 지정 Linux 컨테이너 이미지를 만들고 푸시하는 데 도움이 됩니다.

GSDK와 게임 서버 애플리케이션을 통합

Windows 서버를 사용하는 것과 마찬가지로 게임 서버 코드를 PlayFab 멀티 플레이어 서버 SDK(GSDK)와 통합해야 합니다. 컨테이너 이미지의 일부일 수 있습니다.

지침은 게임 서버 빌드 작성타이틀과 PlayFab GSDK(게임 서버 SDK) 통합을 참조하세요.

Dockerfile 만들기

Dockerfile은 확장명 없이 텍스트 파일이며 지정된 컨테이너 이미지를 빌드하는 데 필요한 모든 명령이 포함됩니다.

  1. 메모장 또는 적합한 편집기 열기
  2. 컨테이너를 실행하고 빌드하는 데 필요한 특정 명령을 추가합니다. 이 파일의 예제는 래퍼 샘플제공된 DockerFile을 참조하세요. 이 파일을 만드는 방법에 대한 자세한 내용은 Dockerfile(외부) 형식Dockerfile(외부)을 만들 때 모범 사례를 참조하세요.
  3. 파일을 Dockerfile로 저장합니다. 빈 폴더/디렉터리에 저장하는 것이 좋습니다. 컨테이너 이미지를 이 폴더에 빌드하는 데 필요한 다른 파일을 추가해야 합니다.

메모장을 사용할 때의 지침을 다음과 같이 저장:

  • 파일>다른 이름으로 저장...을 선택하여 저장 옵션을 엽니다.
  • 파일을 저장할 폴더로 이동합니다.
  • 파일 이름:에서 따옴표를 포함하여 "Dockerfile"을 사용합니다.
  • 파일 형식:의 경우 모든 파일을 선택합니다.
  • UTF-8 인코딩을 선택합니다.
  • 저장을 선택합니다.

Linux 컨테이너 이미지 빌드 및 업로드

  1. Linux 터미널을 열고 Docker를 설치했는지 확인합니다.
  2. 이전 단계에서 얻은 로그인 자격 증명을 사용하여 다음 Docker 명령을 실행합니다. 그런 다음 화면의 지침에 따라 사용자 이름과 암호를 입력합니다.
docker login customer5555555.azurecr.io

docker 로그인을 사용하면 게임 관리자에 표시된 대로 Azure 컨테이너 레지스트리에 로그인됩니다.

username: customer5555555
password: HRDFOdIebJkvBAS+usa55555555
  1. 컨테이너 이미지 빌드

아래 명령을 실행하여 현재 있는 폴더/디렉터리에서 Dockerfile을 사용하여 컨테이너 이미지를 빌드합니다. docker build 명령의 끝에 "."가 있습니다.

-t 플래그는 새 컨테이너 이미지의 name:tag 정보를 지정합니다. 이 항목들은 빌드가 성공하면 사용됩니다. 빌드 오류가 있는 경우 다음 단계로 넘어가기 전에 수정해야 합니다.

아래 예제에서 리포지토리 이름은 customer5555555.azurecr.io/pvp_gameserver이고 태그는 v1입니다. 자세한 내용은 docker 빌드 명령 참조(외부 링크)Dockerfile(외부 링크) 빌드를 참조하세요.

WSL을 사용하는 경우 Windows C: 드라이브는 /mnt/c에 탑재됩니다.

  • 그런 다음, cd /mnt/c/path/to/your/Dockerfile을 실행하여 Dockerfile이 있는 경로로 전환합니다. 자세한 내용은 C 드라이브 액세스를 참조하세요.
docker build -t customer5555555.azurecr.io/pvp_gameserver:v1 .

Linux를 사용하는 경우 pwd를 실행하여 현재 있는 디렉터리를 확인합니다.

  1. 컨테이너 이미지 업로드

아래 명령을 실행하여 이미지를 Azure PlayFab Container 레지스트리에 푸시합니다. 업로드된 컨테이너 이미지에 대한 의미 있고 유용한 name:tag 조합을 선택합니다. 그 다음 Docker Push 또는 다른 컨테이너 레지스트리 클라이언트를 사용하여 컨테이너를 Azure PlayFab 운영 레지스트리에 업로드할 수 있습니다.

docker tag hello-world customer5555555.azurecr.io/pvp_gameserver:v1
docker push customer5555555.azurecr.io/pvp_gameserver:v1

컨테이너가 업로드되었는지 확인

컨테이너가 업로드되면 게임 관리자의 새 빌드 페이지로 돌아가서이미지 새로 고침을 선택합니다. 목록에서 이미지를 보고 선택할 수 있습니다. 또는 ListContainerImages API 호출을 사용하여 업로드된 컨테이너 이미지를 나열할 수 있습니다.

이제 서버를 배포할 준비가 되었습니다. 지침은 PlayFab 포털- 게임 관리자PowerShell/API 사용을 참조하세요.

Windows 및 Linux 컨테이너 이미지 차이점

많은 개발자의 경우 Windows 관리 컨테이너를 사용하는 것이 선호되며 이 방법은 단순하며 기본적인 대안입니다. 그러나 가상 머신에 배포된 Linux 컨테이너 이미지는 더 저렴한 시간당 요금을 이용합니다.

참고 항목

Windows 또는 Linux 컨테이너 이미지를 사용하든 관계없이 게임 서버를 완전히 사용자 지정할 수 있습니다. Windows 서버를 사용하는 경우 자산을 업로드하여 관리되는 컨테이너 이미지를 사용자 지정합니다.

아래 표에는 만들고 사용할 때의 몇 가지 차이점이 나와 있습니다.

개발자 옵션 Windows Linux
개발 디바이스 OS Windows OS WSL(Linux용 Windows 하위 시스템) 또는 Linux OS(이중 OS 또는 VM 사용)
컨테이너 이미지 관리되는 컨테이너 이미지를 사용하는 간단한 배포입니다. 추가 파일을 자산으로 업로드하여 컨테이너를 사용자 지정할 수 있습니다. 완전한 제어를 제공하는 사용자 지정 컨테이너 이미지를 만들어야 하므로 추가 작업이 필요합니다.

API를 사용하여 Linux 컨테이너 이미지 관리

API를 사용하여 Linux 컨테이너 이미지를 관리할 수 있습니다. 나머지 빌드 수명 주기(사용량 보기, 지역 업데이트 및 대기 구성, 삭제)의 경우 게임 관리자를 사용하여 해당 항목을 관리합니다.

  • GetContainerRegistryCredentials: 컨테이너 레지스트리 주소, 사용자 이름 및 암호 검색
  • ListContainerImagesListContainerImageTags: 새 이미지와 태그가 표시되도록 합니다(때로는 이미지를 시스템에 완전히 등록하는 데 몇 분 정도 걸릴 수 있음).
  • CreateBuildWithCustomContainer: 사용자 지정 컨테이너를 사용하여 빌드를 만듭니다. 앞서 업로드한 태그가 있는 이미지를 지정합니다. 요청에 다음 속성이 설정되어 있는지 확인합니다.
    • ContainerImageReference - 이전에 업로드된 이미지 이름 및 태그입니다(위의 ListContainerImages 및 ListContainerImageTags에 표시됨).
    • ContainerFlavor - "CustomLinux"
    • ContainerRunCommand(선택 사항) - 컨테이너에 실행되는 기본 명령이 없는 경우에는 이 명령을 사용하여 모든 인수와 함께 명령이 실행되도록 할 수 있습니다.

참고 항목