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 로 설치하여 테스트를 진행 하였습니다.
- Test를 위한 IIS Server VM 생성
Hyper-V 관리자에서 IIS Server 용으로 VM을 생성 합니다. 그리고 서버 관리자에서 "역할 및 기능 추가"를 클릭 "서버 역할" 에서 "웹 서버(IIS)" 선택 설치 합니다.
설치 후 Default Web site 접속되는 확인 합니다.
- Hyper-V HOST에 Docker 설치
서버 관리자에서 "역할 및 기능 추가"를 클릭 "기능" 에서 "컨테이너" 선택 설치 합니다.
PowerShell 을 열고 아래와 같이 입력하고 실행 합니다.
Install-Module DockerProvider -Force
|
아래와 같이 NuGet 공급자 관련 메시지가 나타나면 무시하고 "예"를 클릭하고 설치 합니다.
다음으로 Docker Package 을 설치 합니다.
Install-Package Docker -ProviderName DockerProvider -Force |
설치 완료 후 "Docker" service가 정상적으로 실행되고 있는지 확인 하십시오.
아래와 같이 Docker 용 vEthernet 이 생성 됩니다.
- 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 로 접근하면 아래와 같이 웹 페이지가 나타납니다.
- 참고 자료
- Windows Container : https://docs.microsoft.com/ko-kr/virtualization/windowscontainers/about/
- Docker : https://docs.docker.com
- Install Docker Enterprise Edition for Windows Server
- Docker run reference : https://docs.docker.com/engine/reference/run/#general-form
- communitytools-image2docker-win : https://github.com/docker/communitytools-image2docker-win
- [Docker] Image2Docker: Bye bye IIS on Windows Server, Hello IIS on Windows Containers : https://www.starwindsoftware.com/blog/docker-image2docker-bye-bye-iis-on-windows-server-hello-iis-on-windows-containers