보통 컨테이너 환경을 떠올리면 리눅스가 생각납니다. 대부분 리눅스 기반 프로세스를 컨테이너 환경에 올리죠. 그도 그럴 것이 컨테이너라는 개념이 리눅스 커널의 기능인 cgroups에서 출발하다 보니, 시장에서는 리눅스가 곧 컨테이너라는 공식이 성립되었습니다. 리눅스 기반 컨테이너가 더 빨리 발전하고, 대중화되었죠. 그렇다면 윈도우 운영체제 프로세스는 컨테이너에 못 올리나? 그럴 리가요, 마이크로소프트에서 윈도우 서버 2016과 윈도우 10부터 윈도우 기반 컨테이너 지원을 공식화했습니다.
출처: Docker Blog
“구글 클라우드 플랫폼에서 윈도우 컨테이너 쓰기”
윈도우 기반 컨테이너를 구글 클라우드 플랫폼(GCP)에서 쓰는 방법을 알아보겠습니다. GCP는 컨테이너 환경에 최적화된 VM 이미지를 제공합니다. 이를 가져다 컴퓨트 엔진에 올려 운영하면 되는데요, 윈도우 VM 이미지 역시 준비되어 있습니다. 설치 이미지는 microsoft/windowsservervore와 microsoft/nanoserver 두 가지가 있습니다.
구글 컴퓨트 엔진에서 윈도우 기반 컨테이너를 운영하려면 먼저 윈도우 VM을 준비해야겠죠. 구글 클라우드 플랫폼 콘솔에 접속한 다음 컴퓨트 엔진 섹션에서 인스턴스를 생성하면 됩니다. 주의할 점은 부트 디스크로 ‘Windows Server version 1709 Datacenter Core for Containers (Beta)’를 선택해야 합니다.
인스턴스를 생성한 다음 윈도우 비밀번호를 지정합니다. VM에 들어가 보면 도커와 베이스 이미지가 설치된 것을 확인할 수 있습니다.
윈도우 컨테이너를 생성했으니 HelloWorld 파워쉘 스크립트 한번 만들어 보죠. 앞서 작업을 통해 microsoft/nanoserver:1709 이미지를 설치했지만, 여기에는 파워쉘이 포함되어 있지 않습니다. 그러니 microsoft/powershell 이미지를 가져와 써보겠습니다. 다음과 같이 이미지를 가져와 실행합니다.
C:\..> docker pull microsoft/powershell:6.0.1-nanoserver-1709 ... C:\..> docker run -it microsoft/powershell:6.0.1-nanoserver-1709
준비를 마쳤으니 HelloWorld 파워쉘 스크립트를 다음과 같이 생성한 다음 컨테이너 환경에서 나옵니다.
PS C:\> Add-Content C:\Users\Public\helloworld.ps1 'Write-Host "Hello World"' PS C:\> exit
이제 파워쉘 스크립트를 포함한 이미지를 새로 만들어 보죠. 다음과 같이 commit 명령으로 새로운 컨테이너 ID로 이미지를 만듭니다.
C:\..> docker ps -a C:\..> docker commit helloworld
이제 스크립트를 포함한 컨테이너를 실행할 수 있습니다.
C:\..> docker run --rm helloworld pwsh c:\Users\Public\helloworld.ps1 Hello World!
직접 실습해 보고 싶다면 코드랩에서 따라 해 볼 수 있습니다. 친절함이 느껴지는군요. 구글 컴퓨트 환경에서 직접 따라 해 볼 수 있게 해놓았네요. 구글 컴퓨트 환경이 아니라 글로만 읽어 보는 것도 가능합니다.
유튜브에도 1분짜리 데모 영상이 있습니다. 바쁜 분이 이거 봐도 좋을 듯합니다. GCP 기반 컨테이너 환경에 대한 기술 문의는 메가존으로 해주세요.