Linux 컨테이너 이미지 생성 및 배포
이 섹션에서는 Linux 컨테이너 이미지를 생성 및 배포하는 데 도움이 되는 구체적인 단계를 설명합니다. 가상 머신(VM) 생성에 설명된 대로, 서비스를 사용할 때 예산과 수요에 따라 전 세계에서 게임 서버로 VM이 자동으로 스핀업되도록 구성합니다. 이를 위해 VM을 명시적으로 생성하는 것이 아니라 사용자를 대신하여 생성되는 방법을 결정하는 매개 변수를 정의합니다. 이 프로세스를 빌드 배포 또는 생성이라고 합니다. PlayFab Multiplayer Servers는 Linux 기반 및 Windows 기반 게임 서버를 모두 배포할 수 있습니다. Linux 컨테이너용 빌드가 배포되는 방식은 몇 가지 중요한 차이점이 있지만 Windows 컨테이너와 유사합니다. 자세한 내용은 Windows와 Linux 컨테이너 이미지 차이점을 참조하세요. PowerShell/API를 사용하여 Linux 컨테이너를 관리하려면 API를 사용하여 Linux 컨테이너 이미지 관리를 참조하세요. Linux 기반 게임 서버를 사용할 때는 관리형 컨테이너 이미지를 사용하는 대신 컨테이너 이미지를 만들어 컨테이너 레지스트리에 업로드해야 합니다. 컨테이너 업로드를 쉽게 하기 위해 계정에는 Azure 컨테이너 레지스트리가 함께 제공됩니다.필수 지식
Windows 개발 장치 설정
이 단계는 Windows 개발 장치를 사용하여 Linux 컨테이너 이미지를 만들려는 경우에만 필요합니다. 또는 Docker가 설치된 Linux OS 장치, VM 또는 듀얼 OS 시스템을 사용할 수 있습니다. Windows Subsystem for Linux(WSL)을 사용하면 익숙한 Windows 환경에서 개발 장치를 사용하여 Linux 컨테이너 이미지를 작성 및 관리할 수 있습니다. WSL을 사용하면 기존 Linux 가상 머신이나 듀얼 부팅 설정의 오버헤드가 필요하지 않습니다.- WSL 2 설치. 컴퓨터를 다시 시작하고 WSL 2를 사용하고 있는지 확인하세요. Linux 커널 업데이트 패키지도 설치해야 합니다.
- WSL을 사용하는 Linux 배포판 설치. VM은 Ubuntu를 사용하지만 컨테이너 이미지용으로 원하는 배포판을 선택할 수 있습니다. Ubuntu 20.04 Long-Term Support(LTS) 또는 이후 버전을 사용하는 것을 고려하세요.
- WSL 2와 함께 Windows용 Docker Desktop 설치. 직접 다운로드 링크는 Windows용 Docker Desktop(외부)을 참조하세요.
- PowerShell 열기
- __wsl -l -v__를 실행하여 docker-desktop과 ubuntu 애플리케이션이 모두 WSL 2(버전 2)를 실행하고 있는지 확인합니다.
- WSL 터미널 열기
- __docker version__을 실행하여 Docker가 설치되어 있고 사용되는 OS가 Linux인지 확인합니다.
PlayFab 컨테이너 레지스트리 로그인 자격 증명 가져오기
Azure 컨테이너 레지스트리 계정은 PlayFab 계정과 연결됩니다. 여러분만 여기에 업로드된 컨테이너에 액세스할 수 있습니다. 이 Azure 컨테이너 레지스트리는 무료로 제공됩니다.- Game Manager에서 게임 타이틀을 선택한 다음 Multiplayer > __Servers__를 선택합니다. __New build__를 선택하여 빌드 생성 페이지를 엽니다.
- 가상 머신 운영 체제로 __Linux__를 선택합니다.
- 나중에 이 정보가 필요하므로 로그인 자격 증명—이름, 암호 및 customer5555555.azurecr.io—을 기록해 두세요.
Azure Container Registry에 Linux 컨테이너 이미지 생성 및 푸시
다음 단계는 사용자 지정 Linux 컨테이너 이미지를 만들고 푸시하는 데 도움이 됩니다.게임 서버 애플리케이션과 GSDK 통합
Windows 서버 사용과 유사하게 게임 서버 코드를 PlayFab Multiplayer Server SDK(GSDK)와 통합해야 합니다. GSDK 통합은 컨테이너 이미지의 일부일 수 있습니다. 지침은 게임 서버 빌드 작성 및 PlayFab Game Server SDK(GSDK)와 타이틀 통합을 참조하세요.Dockerfile 생성
Dockerfile은 확장자가 없는 텍스트 파일이며 지정된 컨테이너 이미지를 빌드하는 데 필요한 모든 명령을 포함합니다.- 메모장 또는 적합한 편집기를 엽니다.
- 컨테이너를 실행하고 빌드하는 데 필요한 특정 명령을 추가합니다. 이 파일의 예는 Wrapper 샘플에 제공된 DockerFile을 참조하세요. 이 파일을 만드는 방법에 대한 자세한 내용은 Dockerfile 형식(외부) 및 Dockerfile 생성 시 모범 사례(외부)를 참조하세요.
- 파일을 Dockerfile로 저장합니다. 이상적으로 빈 폴더/디렉터리에 저장합니다. 컨테이너 이미지를 빌드하는 데 필요한 다른 파일을 이 폴더에 추가해야 합니다.
- 파일 > __다른 이름으로 저장…__을 선택하여 저장 옵션을 엽니다.
- 파일을 저장할 폴더로 이동합니다.
- __파일 이름:__에 따옴표를 포함하여 __“Dockerfile”__을 사용합니다.
- __파일 형식:__에서 __모든 파일__을 선택합니다.
- UTF-8 인코딩을 선택합니다.
- __저장__을 선택합니다.
Linux 컨테이너 이미지 빌드 및 업로드
- Docker가 설치된 Linux 터미널을 엽니다.
- 이전 단계에서 가져온 로그인 자격 증명을 사용하여 다음 Docker 명령을 실행합니다. 그런 다음 화면의 지침에 따라 사용자 이름과 암호를 입력합니다.
- 컨테이너 이미지 빌드
- 그런 다음 __cd /mnt/c/path/to/your/Dockerfile__을 실행하여 Dockerfile이 있는 경로로 전환합니다. 자세한 내용은 C 드라이브에 액세스를 참조하세요.
- 컨테이너 이미지 업로드
컨테이너가 업로드되었는지 확인
컨테이너가 업로드되면 Game Manager의 New Build 페이지로 돌아가서 __Refresh Images__를 선택하세요. 목록에서 이미지를 확인하고 선택할 수 있습니다. 또는 ListContainerImages API 호출을 사용하여 업로드된 컨테이너 이미지를 나열할 수 있습니다. 이제 서버를 배포할 준비가 되었습니다. 지침은 PlayFab 포털—Game Manager 및 PowerShell/API 사용을 참조하세요.Windows와 Linux 컨테이너 이미지 차이점
많은 개발자에게 Windows 관리형 컨테이너를 사용하는 것이 선호되는 간단한 기본 선택입니다. 그러나 가상 머신에 배포된 Linux 컨테이너 이미지는 더 저렴한 시간당 요금이 적용됩니다.Windows 또는 Linux 컨테이너 이미지 중 어느 것을 사용하든 게임 서버를 완전히 사용자 지정할 수 있습니다. Windows 서버를 사용할 때는 자산을 업로드하여 관리형 컨테이너 이미지를 사용자 지정합니다.
API를 사용하여 Linux 컨테이너 이미지 관리
API를 사용하여 Linux 컨테이너 이미지를 관리할 수 있습니다. 나머지 빌드 수명 주기(사용량 보기, 지역 및 standingBy 구성 업데이트, 삭제)의 경우 Game Manager를 사용하여 관리하세요.- GetContainerRegistryCredentials: 컨테이너 레지스트리 주소, 사용자 이름 및 암호를 검색합니다.
- ListContainerImages 및 ListContainerImageTags: 새 이미지와 태그가 나열되어 있는지 확인합니다(때로는 이미지가 시스템에 완전히 등록되는 데 몇 분이 걸릴 수 있음).
- CreateBuildWithCustomContainer: 사용자 지정 컨테이너로 빌드를 생성합니다. 이전에 업로드한 태그 이미지를 지정합니다. 요청에 다음 속성이 설정되었는지 확인합니다.
- ContainerImageReference - 이전에 업로드한 이미지 이름과 태그. 이 값은 ListContainerImages와 ListContainerImageTags에서 확인할 수 있습니다.
- ContainerFlavor - “CustomLinux”
- ContainerRunCommand(선택 사항) - 컨테이너에 기본 명령이 없는 경우 이 속성을 사용하여 인수와 함께 실행할 명령을 제공합니다.
Linux 프로세스 기반 서버를 위한 자산 패키징
Linux를 프로세스 모드(컨테이너 모드 대신)로 사용할 때는 게임 서버를 컨테이너 이미지가 아닌 자산 아카이브로 업로드합니다. 이 섹션에서는 중요한 패키징 요구 사항을 설명합니다.지원되는 아카이브 형식
Unix 파일 권한(예: 실행 비트)을 추출 중에 보존할 수 있도록 자산을.tar.gz 또는 .tar 파일로 업로드해야 합니다.
Tar.gz 및 tar 아카이브 구조 요구 사항
.tar 또는 .tar.gz 아카이브를 추출할 때 PlayFab Multiplayer Servers는 아카이브에서 첫 번째 디렉터리 수준을 제거합니다(tar --strip-components=1과 동등). 아카이브는 반드시 모든 게임 파일이 그 안에 있는 단일 최상위 래퍼 디렉터리를 포함해야 합니다.
올바른 구조 — 최상위 디렉터리 안에 있는 파일:
시작 명령 설정
프로세스 기반 서버의 경우 시작 명령은 추출 후 루트 자산 폴더에 상대적이어야 합니다(즉, 최상위 디렉터리가 제거된 후 파일이 위치하는 곳에 상대적). 예를 들어 아카이브에MyGameServer/MyGame.x86_64가 포함된 경우 추출 후 파일은 자산 폴더의 루트에 있게 됩니다. 시작 명령을 다음과 같이 설정합니다.
MyGameServer/bin/MyGame.x86_64) 시작 명령을 다음과 같이 설정합니다.
API를 사용하여 Linux 프로세스 기반 빌드 관리
API를 사용하여 Linux 프로세스 기반 빌드를 관리할 수 있습니다. 나머지 빌드 수명 주기(사용량 보기, 지역 및 standingBy 구성 업데이트, 삭제)의 경우 Game Manager를 사용하여 관리하세요.- CreateBuildWithProcessBasedServer: 게임 서버가 프로세스로 실행되는 빌드를 생성합니다. 요청에 다음 속성이 설정되었는지 확인합니다.
- OsPlatform - “Linux”
- GameAssetReferences - 게임 자산 목록(
.tar.gz또는.tar파일로 업로드). 각 자산은 업로드된 자산 이름과 일치하는 FileName이 필요합니다. - StartMultiplayerServerCommand - 게임 서버가 시작될 때 실행할 명령. 경로는 추출 후 루트 자산 폴더에 상대적이어야 합니다(예:
MyGame.x86_64 -server). - Ports - 빌드에 매핑할 포트.
- MultiplayerServerCountPerVm - 단일 VM에서 호스팅할 게임 서버 인스턴스 수.
- RegionConfigurations - 대기 및 최대 서버 수와 함께 배포할 지역.
