본문 바로가기

settings/Others

Docker Windows 컨테이너 삽질 기록

지금 근무하는 회사에서 Windows Server⨁IIS.NET framework 환경에서 개발하고 있습니다. Windows Server에 RDP로 접속해서 설정을 하고 패치를 하고 있는데, Command Line 명령어가 아닌 GUI로 클릭해서 하고 있었습니다. 쉽긴 하지만 자동화는 전혀 되어있지 않은 환경이라서 협업하기 불편한 환경입니다. 제 목마름을 해결하기 위해 자동화를 향한 삽질을 해봤고, 이틀에 걸친 삽질을 기록해보고자 합니다.

1. Window 이미지 + RDP 접속 시도

현재 GUI 환경에서 모든 걸 처리하고 있어서 Windows 컨테이너를 생성, 포트를 연결하고 RDP로 접속하려고 했습니다. DockerHub에서 다음 명령어로 Windows 이미지를 받았습니다. 

docker pull mcr.microsoft.com/windows

그리고 docker run -p 포트 명령어를 통해서 RDP 접속을 위한 3389 포트를 바인딩해줬습니다.

docker run -it --name test -p 3389:3389 도커이미지

자신 만만하게 로컬에서 원격 데스크톱 연결을 이용해서 접속했으나, 실패했습니다. 찾아보니 RDP 접속이 가능한 윈도우 이미지는 없다고 하네요. 

 

2. Windows IIS 이미지

RDP 접속이 안되는 걸 알고, 고민을 했습니다. RDP 접속이 되지 않는다면, GUI 클릭으로만 할 수 있는 IIS 세팅은 불가능한 건지 궁금했습니다. 검색 결과 Windows IIS 이미지가 있다는 걸 알게 되었습니다. 기본적인 IIS 세팅이 되어있는 이미지가 있다면, Command Line 명령어도 있을 것이고 원하는 대로 자동화도 될 거라고 생각했습니다.

 

그렇게 DockerHub에서 Windows IIS 이미지를 받았습니다.

docker pull mcr.microsoft.com/windows/servercore/iis

로컬의 8080포트와 컨테이너의 80포트를 바인딩하도록 생성했습니다.

docker run -it --name iis -p 8080:80 mcr.microsoft.com/windows/servercore/iis

컨테이너를 실행하고 localhost:8080으로 접속하면 iisstart 이미지가 뜹니다. 이러면 windows iis가 잘 실행되고 있다는 뜻입니다 :)

 

MS에서 Powershell용 IIS 명령어들을 제공해줘서, 세팅하고 바인딩하는 게 어렵지 않았습니다. 하지만 간단히 끝난다면 삽질 기록이라고 하기 어렵죠😰간단한 HTML+CSS 코드는 돌아갔지만, 회사에서 개발자분들이 쓰는 .NET framework의 코드가 돌아가지 않았습니다. windows iis 이미지에서 .NET framework 코드를 돌리려고 검색을 해봐도 방법이 나오질 않았습니다. 아니 .NET이 인기가 없어도 이 정도는 아닐 텐데🤔라고 생각하던 찰나에, .NET framework용 이미지가 있다는 걸 알게 되었습니다.

 

3. .NET framework용 이미지

개발자는 검색을 못하면 손이 고생하는 법이죠. 닷넷 프레임워크 이미지가 있다는걸 처음부터 알았더라면 이 고생은 안했을텐데,,, 아무튼 이번에도 DockerHub에서 .NET framework용 이미지를 다운받아줬습니다.

docker run -it --rm -p 8000:80 --name aspnet_sample mcr.microsoft.com/dotnet/framework/samples:aspnetapp

--rm 옵션을 이용한 테스트 이미지 생성과 .net framework가 잘 돌아갔습니다.

 

하지만 테스트까지는 잘 동작했지만 .NET framework용 이미지도 원하는 대로 되지 않았습니다. 윈도우용 패키지 관리자인 chocolatey를 설치하면 무조건 에러를 뱉으면서 컨테이너가 종료되는 문제가 있었습니다. 이 부분은 다음 포스팅에서 이어서 작성해보겠습니다.


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다 :D