'Container'에 해당되는 글 1건

  1. 2018.02.22 Image2Docker를 이용한 Hyper-V VM(IIS) to Container Migration
posted by jgpaper 2018. 2. 22. 09:19
Image2Docker는 기존에 사용하고 있는 VM 또는 원격 컴퓨터에서 ASP.NET 웹 사이트를 추출하고, 이를  Windows의 Docker 컨테이너로 build하고 실행 할 수 있도록 하는 PowerShell 모듈 입니다.
아래 내용은 Image2Docker를 이용하여 IIS VM을 추출하고 이를 Windows Docker container 로 생성 실행하는 가이드입니다.
 
해당 가이드는 Windows Server 2016 1709 Hyper-V 호스트 서버에 1개의 VM 을 생성 하였으며, Guest OS 도 Windows Server 2016 1709 로 설치하여 테스트를 진행 하였습니다.
 
  1. Test를 위한 IIS Server VM 생성
Hyper-V 관리자에서 IIS Server 용으로 VM을 생성 합니다. 그리고 서버 관리자에서 "역할 및 기능 추가"를 클릭 "서버 역할" 에서 "웹 서버(IIS)" 선택 설치 합니다.
 

 
설치 후 Default Web site 접속되는 확인 합니다.
 

 
  1. Hyper-V HOST   Docker 설치
* 참고 : 설치 방법은 Docker 사이트에서 "Install Docker Enterprise Edition for Windows Server" 참조 하였습니다.
 
서버 관리자에서 "역할 및 기능 추가"를 클릭 "기능" 에서 "컨테이너" 선택 설치 합니다.

 
PowerShell 을 열고 아래와 같이 입력하고 실행 합니다.
 
Install-Module DockerProvider -Force
 
아래와 같이 NuGet 공급자 관련 메시지가 나타나면 무시하고 "예"를 클릭하고 설치 합니다.

 

 
다음으로 Docker Package 을 설치 합니다.
Install-Package Docker -ProviderName DockerProvider -Force
 

 
설치 완료 후 "Docker" service가 정상적으로 실행되고 있는지 확인 하십시오.
 

 
아래와 같이 Docker 용 vEthernet 이 생성 됩니다.

 
  1. Image2docker 를 이용한 추출 및 Container 실행
Image2docker 에 대한 자세한 내용은 아래 사이트를 참조 하십시오.
 
IIS 용 VM에 Image2Docker module를 설치 합니다.
Install-Module image2docker
 
아래와 같이 "NuGet 공급자…" 관련한 메시지가 나오면 무시하고 "Y" 을 입력하고 엔터키를 입력합니다.

 
"신뢰할 수 없는 리포지토리…" 메시지가 나오면 무시하고 "Y"을 입력하고 엔터키를 입력합니다.

 
설치가 완료 되면 아래 명령어로 추출 가능한 응용프로그램 리스트를 확인합니다.
Get-WindowsArtifact
 

 
convert 전에 대상 IIS VM을 종료 해야 합니다. 아래 명령으로 Docker File로 convert 합니다.

ConvertTo-Dockerfile -ImagePath C:\VM\IISVM.vhdx -Artifact IIS -OutputPath c:\vh\IISVM
ImagePath
vhdx 파일이 존재 하는 위치
OutputPath
Docker file 생성될 위치
 
convert 가 정상적으로 완료되면 Hyper-V 호스트 "outputpath" 위치에 아래와 같이 추출된 docker file이 존재합니다.

 
PowerShell 에서 위의 파일 위치로 이동하여 아래 명령어로 빌드 합니다.
Docker build -t iisvm .
 
build 가 진행됩니다. 크기에 따라 build 시간이 소요 됩니다.

 
아래와 같이 build 완료를 확인 할 수 있습니다.

 
정상적으로 build 되었는지 아래 명령어로 Image를 확인 합니다.
docker images
 
build 한 iisvm 을 확인 할 수 있습니다.

 
아래 명령어로 실행되고 있는 container를 확인 합니다.
docker ps -a
아래 그림과 같이 실행되고 있는 container는 없습니다.


이제 아래 명령어로 iisvm  container 를 실행 합니다.
  • 명령어 설명 :  80 번 port로 매핑하고 container 이름을 "website"로 지정
  • 자세한 명령어 참조 :  Docker run reference
docker run -d -p 80:80 --name website iisvm
 

 
다음으로 방금 올린 "website" container IP Address를 확인 합니다. 아래 명령어로 IP Address를 확인합니다.
docker inspect website
 
많은 정보가 나오는데 마지막 부분에 IP Address 를 확인 할 수 있습니다.

 
Web browser을 열고 확인 한 IP Address 로 접근하면 아래와 같이 웹 페이지가 나타납니다.

 
  1. 참고 자료