Windows 에서 Docker 사용하기 (Windows Container)

윈도우즈/OS 일반|2023. 10. 10. 14:50
반응형

윈도우즈에서 Docker 를 사용하는 방법입니다.

여기에서는 Docker 를 이용해 Windows Container 를 가동해 보겠습니다.

Windows Container 는 Windows 10, 11 또는 Windows Server 2016 이후의 버전을 기반으로 실행해야 합니다.

저는 Windows 2019 Server 기반에서 진행하였습니다.

 

 

1. Hyper-V 설치

 

윈도우즈 파워쉘을 열고 아래 명령을 실행하여 Hyper-V 구성요소를 설치합니다.

PS C:\Users\Administrator> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
지금 컴퓨터를 다시 시작하여 이 작업을 완료하시겠습니까?
[Y] Yes  [N] No  [?] 도움말 (기본값은 "Y"): Y

 

'Y' 를 입력하여 리부팅을 합니다.

 

 

2. Docker Desktop for Windows 설치

 

부팅이 되었다면 아래 URL 에 접속하여 윈도우즈용 Docker 를 다운로드 받아 설치합니다.

https://docs.docker.com/desktop/install/windows-install 으로 접속하여 [Docker Desktop for Windows] 버튼을 클릭해 설치파일을 다운로드하고, 실행하여 설치합니다.

현재 날짜 기준으로 Docker Desktop 4.24.1 버전이 설치되었습니다.

설치 완료 후, 재부팅을 해야 합니다.

부팅되어 윈도우즈에 다시 로그인을 하면 Docker Desktop 에서 아래와 같은 메세지가 출력됩니다.

 

-----

Windows 17763 is deprecated

You can still use Docker Desktop but you are on Windows 17763.

You will not be able to install further major updates (3.6.0 and above).

We recommend upgrading to the latest version of Windows.

-----

Windows 17763은 더 이상 사용되지 않습니다.
Docker Desktop을 계속 사용할 수 있지만 Windows 17763을 사용하고 있습니다.
추가 주요 업데이트(3.6.0 이상)를 설치할 수 없습니다.
최신 버전의 Windows로 업그레이드하는 것이 좋습니다.

-----

 

[OK] 버튼을 누르고 사용 동의를 묻는 질문에 동의합니다.

그 다음 저는 로그인을 스킵하고 진행하였습니다. (맨 아래 밑줄 클릭)

직업을 묻는 창이 뜨는데 마찬가지로 스킵하고 진행하였습니다.

이제 Docker Desktop 사용준비가 완료되었습니다.

 

 

3. Windows Container 이미지 다운로드

 

Windows Container 는 latest TAG 를 지원하지 않으므로 아래 페이지에서 TAG 를 확인 후 정확하게 입력해줘야 합니다.

- Server Core : https://hub.docker.com/_/microsoft-windows-servercore

- Nano Server : https://hub.docker.com/_/microsoft-windows-nanoserver

- Windows : https://hub.docker.com/_/microsoft-windows

- Windows Server : https://hub.docker.com/_/microsoft-windows-server

 

nanoserver:ltsc2022 버전을 다운로드 하기위해 파워쉘을 실행해 아래와 같이 명령어를 입력합니다.

PS C:\Users\Administrator> docker pull mcr.microsoft.com/windows/nanoserver:2022-amd64
[2023-10-10T06:40:43.321895600Z][docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.
2022-amd64: Pulling from windows/nanoserver
no matching manifest for linux/amd64 in the manifest list entries

 

위와 같은 메세지가 출력된다면 Linux 컨테이너를 실행하도록 되어 있는 것입니다. Windows 컨테이너로 실행하려면 플랫폼 옵션을 추가해 줍니다.

PS C:\Users\Administrator> docker pull --platform windows/amd64 mcr.microsoft.com/windows/nanoserver:2022-amd64

[2023-10-10T06:51:52.322714700Z][docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.
2022-amd64: Pulling from windows/nanoserver
no matching manifest for windows/amd64 10.0.17763 in the manifest list entries

 

플랫폼은 변경되었으나, 에러가 발생했습니다. 에러는 아래에서 잡도록 하고 우선 플랫폼 옵션이 번거로우므로 기본 설정으로 변경하여 옵션을 생략하도록 합니다.

윈도우 하단 우측의 트레이에서 Docker 아이콘을 우클릭하면 'Switch to Windows containers...' 옵션이 보입니다. 이를 클릭하고 다시 명령을 실행해 보겠습니다.

PS C:\Users\Administrator> docker pull mcr.microsoft.com/windows/nanoserver:2022-amd64
[2023-10-10T07:23:17.806412500Z][docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.
2022-amd64: Pulling from windows/nanoserver
no matching manifest for windows/amd64 10.0.17763 in the manifest list entries

 

옵션을 제외하고 Windows 컨테이너로 다운로드 시도한것이 보입니다. 하지만 에러가 해결되지는 않았습니다.

OS 버전을 확인합니다.

PS C:\Users\Administrator> docker info |findstr 'Operating System'
 Operating System: Microsoft Windows Server Version 1809 (OS Build 17763.107)

 

현재 OS 버전은 1809 이므로 1809 이후의 버전은 구동하지 못합니다.

원래 다운로드 받으려고 했던 2022-amd64 버전을 1809-amd64 로 변경하여 다운로드 합니다.

PS C:\Users\Administrator> docker pull mcr.microsoft.com/windows/nanoserver:1809-amd64
[2023-10-10T07:40:06.050064200Z][docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.
1809-amd64: Pulling from windows/nanoserver
f10ae9b68062: Pull complete
Digest: sha256:1b377c168fe2aeef3acd02d3a654c1280b45e6151d66d71ca1d50292e1cce106
Status: Downloaded newer image for mcr.microsoft.com/windows/nanoserver:1809-amd64
mcr.microsoft.com/windows/nanoserver:1809-amd64

What's Next?
[2023-10-10T07:40:14.293630700Z][docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.
[2023-10-10T07:40:14.369957100Z][docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.
  View a summary of image vulnerabilities and recommendations → docker scout quickview mcr.microsoft.com/windows/nanoserver:1809-amd64

 

다운로드가 잘 되었습니다. 도커 이미지 목록에도 보이는지 확인합니다.

PS C:\Users\Administrator> docker images
REPOSITORY                             TAG          IMAGE ID       CREATED       SIZE
mcr.microsoft.com/windows/nanoserver   1809-amd64   bd7fe7d0dddd   5 weeks ago   252MB

 

참고로 배포되는 컨테이너 TAG 리스트는 아래에서 확인이 가능합니다.

- Server Core : https://mcr.microsoft.com/v2/windows/servercore/tags/list

- Nano Server : https://mcr.microsoft.com/v2/windows/nanoserver/tags/list

- Windows : https://mcr.microsoft.com/v2/windows/tags/list

- Windows Server : https://mcr.microsoft.com/v2/windows/server/tags/list

 

 

4. Windows Container 실행

 

아래와 같이 실행하면 컨테이너의 명령프롬프트 실행이 가능합니다.

PS C:\Users\Administrator> docker run -it mcr.microsoft.com/windows/nanoserver:1809-amd64 cmd.exe

 

cmd.exe 대신 ipconfig.exe 를 입력하면 명령 수행 후 컨테이너가 바로 종료됩니다.

그래서 추가작업이 필요한 경우 cmd.exe 를 실행하고 출력된 명령프롬프트에서 추가 명령을 진행하면 됩니다.

이제, 컨테이너 목적으로 사용하시려면 Dockerfile 을 작성해서 웹서버와 같은 서비스를 구동해 보시기 바랍니다.

 

 

* 참고 (Container 원격 접속)

 

아래 링크에서 확인된 바로는 윈도우즈 컨테이너에서는 RDP 나 GUI 를 제공하지 않는다고 나와 있습니다.

 

https://github.com/microsoft/Windows-Containers/issues/306#issuecomment-1376440627

"Windows 컨테이너 이미지에서 제거되었으므로 지원되지 않습니다. 조만간 RDP 나 GUI 를 사용할 계획이 없기 때문에 Windows 컨테이너 구현 방식을 대대적으로 재설계해야 합니다. 애플리케이션에 GUI 나 RDP 가 필요한 경우 VM 을 계속 사용하는 것이 좋습니다. Azure Virtual Desktop 이나 Azure VM 과 같은 서비스가 더 적합할 수 있습니다."

 

https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/lift-shift-to-containers#what-cant-be-moved-to-windows-containers

- 지원되지 않는 응용프로그램/기능 : 데스크톱이 필요한 애플리케이션

- 지원되지 않는 이유 : 컨테이너가 GUI (Graphic User Interface) 를 지원하지 않음

- 이 문제를 해결할 수 있습니까? : 애플리케이션에서 GUI 만 설치하면 되는 경우 자동 설치로 변경하는 것이 해결책이 될 수 있습니다.

- 지원되지 않는 응용프로그램/기능 : RDP(Remote Desktop Protocol)를 사용하는 응용프로그램

- 지원되지 않는 이유 : RDP는 대화형 세션을 위한 것이므로 위의 원칙이 여기서도 적용됩니다.

- 이 문제를 해결할 수 있습니까? : WAC(Windows Admin Center) 또는 Remote PowerShell을 원격 관리 대신 사용할 수 있습니다.

 

특정 버전에서 RDP 를 사용할 수 있는 방법이 있다고 하는데 이마저도 완벽히 동작하지는 않는듯 합니다.

https://withinrafael.com/2018/03/09/using-remote-desktop-services-in-containers/

 

마이크로소프트에서 공식적으로 컨테이너에서 RDP 는 제공하지 않는다고 하였고, 향후 계획도 없다고 하였으므로 컨테이너에 RDP 접속은 할 수 없는것으로 판단됩니다. 컨테이너 목적이 다르므로, 그래도 원격접속을 하고 싶을 경우 VM 을 이용하면 됩니다.

반응형

댓글()