성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] systemd for Developers I ; https:/...
[정성태] 엄밀히 object 타입의 인스턴스가 다른 타입으로 형변환 가능...
[정성태] 아래의 글에서 나오는 "Windows Application Pa...
[정성태] The history of calling conventions,...
[정성태] Secure and Deploy .NET Windows Form...
[정성태] Get Started with Milvus Vector DB i...
[정성태] cyberark/PipeViewer - A tool that...
[정성태] WinForms in a 64-Bit world – our st...
[정성태] 예제에서 SELECT_SQL도 내부적으로는 SqlCommand/...
[victor] SELECT_LINQ SELECT_SQL 같은 쿼리인...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Windows nanoserver에 대한 docker pull의 태그 사용</h1> <p> "nanoserver" 이미지를 받아볼까요? ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver</span> Using default tag: latest Error response from daemon: manifest for mcr.microsoft.com/windows/nanoserver:latest not found: manifest unknown: manifest unknown </pre> <br /> 위와 같이 기본적으로 tag를 안 붙이는 경우 ":latest"로 접근하게 되는데 "모든" 이미지들이 꼭 "latest"가 붙은 이미지를 함께 배포하는 것은 아니므로 해당 이미지 배포본의,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Nano Server ; <a target='tab' href='https://hub.docker.com/_/microsoft-windows-nanoserver'>https://hub.docker.com/_/microsoft-windows-nanoserver</a> </pre> <br /> 도움말을 찾아 지원되는 태그를 확인하는 것이 좋습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Note: This repo does <span style='color: blue; font-weight: bold'>not publish or maintain a latest tag</span>. Please declare a specific tag when pulling or referencing images from this repo. </pre> <br /> 참고로, 위의 링크에도 나오지만 nanoserver의 지원되는 모든 태그 목록은 다음과 같은 링크로 구할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > List of all available tags for windows/nanoserver ; <a target='tab' href='https://mcr.microsoft.com/v2/windows/nanoserver/tags/list'>https://mcr.microsoft.com/v2/windows/nanoserver/tags/list</a> </pre> <br /> <hr style='width: 50%' /><br /> <br /> 그런데 지원된다고 하는 태그조차도 manifest 목록에 없다고 할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:1903</span> 1903: Pulling from windows/nanoserver no matching manifest for windows/amd64 10.0.14393 in the manifest list entries </pre> <br /> 그래서 "<a target='tab' href='https://mcr.microsoft.com/v2/windows/nanoserver/tags/list'>List of all available tags for windows/nanoserver</a>" 목록을 통해 근사치 태그로 접근해도 이번에는 현재 운영체제와 맞지 않는 이미지라고 오류가 발생할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:1903-amd64</span> 1903-amd64: Pulling from windows/nanoserver a Windows version 10.0.18362-based image is incompatible with a 10.0.17763 host </pre> <br /> "docker info" 명령어로 확인해 보면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Kernel Version: 10.0 17763 (17763.1.amd64fre.rs5_release.180914-1434) Operating System: Windows Server 2019 Datacenter <span style='color: blue; font-weight: bold'>Version 1809</span> (OS Build 17763.1075) OSType: windows Architecture: x86_64 CPUs: 8 </pre> <br /> 운영체제의 버전이 1809이므로 "1903-amd64"의 경우 그보다 최신 버전이므로 오류가 발생한 것입니다. 따라서, 태그 목록에서 1809 관련한 태그를 찾아 시도하면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:1809-amd64</span> 1809-amd64: Pulling from windows/nanoserver a35da61c3562: Pull complete Digest: sha256:06281772b6a561411d4b338820d94ab1028fdeb076c85350bbc01e80c4bfa2b4 Status: Downloaded newer image for mcr.microsoft.com/windows/nanoserver:1809-amd64 </pre> <br /> 휴~~~ 이제야 겨우 이미지를 내려받았습니다. ^^; 하지만, 만약 여러분이 운이 나빠 "<a target='tab' href='https://hub.docker.com/editions/community/docker-ce-desktop-windows'>Docker Desktop for Windows</a>" 환경에서 테스트하는 경우라면 이런 오류도 만날 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:1809-amd64</span> 1809-amd64: Pulling from windows/nanoserver a35da61c3562: Downloading [==> ] 5.405MB/101.1MB image operating system "windows" cannot be used on this platform </pre> <br /> 그렇습니다, 현재 "Docker Desktop"이 "Linux Containers" 모드로 동작하고 있기 때문에 윈도우 이미지를 설치할 수 없는 것입니다. 트레이 아이콘으로 가서 "Switch to Windows containers..." 명령을 실행한 후에야 "nanoserver" 이미지를 설치할 수 있습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 만약 여러분들이 운이 나빠 "Windows Server 2016"을 가지고 있다면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker info</span> ...[생략]... Kernel Version: 10.0 14393 (14393.3541.amd64fre.rs1_release_inmarket.200218-2047) Operating System: <span style='color: blue; font-weight: bold'>Windows Server 2016</span> Standard <span style='color: blue; font-weight: bold'>Version 1607</span> (<span style='color: blue; font-weight: bold'>OS Build 14393.3542</span>) OSType: windows ...[생략]... </pre> <br /> "Version 1607"을 보고는 아마도 다음과 같이 시도할지도 모르겠습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:1607-amd64</span> Error response from daemon: manifest for mcr.microsoft.com/windows/nanoserver:1607-amd64 not found: manifest unknown: manifest unknown </pre> <br /> 아쉽게도 마이크로소프트는 1607-amd64 태그를 가진 nanoserver는 배포하지 않습니다. 대신 "1803-amd64"를 실행해 보면, 당연히 현재의 운영체제에서는 지원할 수 없다는 오류 메시지를 보게 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64</span> 1803-amd64: Pulling from windows/nanoserver a Windows version 10.0.17134-based image is incompatible with a 10.0.14393 host </pre> <br /> Windows Server 2016의 경우에는, "OS Build" 버전의 정보까지 내려가서 태그를 달아야 합니다. 위에서 docker info로 본 OS Build는 14393.3542였는데, 그렇다고 해서 이 빌드 버전을 그대로 사용할 수는 없습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:10.0.14393.3542</span> Error response from daemon: manifest for mcr.microsoft.com/windows/nanoserver:10.0.14393.3542 not found: manifest unknown: manifest unknown </pre> <br /> "<a target='tab' href='https://mcr.microsoft.com/v2/windows/nanoserver/tags/list'>List of all available tags for windows/nanoserver</a>" 목록을 보고, 최대한 근사치의 태그를 찾아 시도해 보면 정상적으로 이미지를 다운로드할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>docker pull mcr.microsoft.com/windows/nanoserver:10.0.14393.2430</span> 10.0.14393.2430: Pulling from windows/nanoserver bce2fbc256ea: Already exists 4a14bdf6da80: Pull complete Digest: sha256:ba322999264cd8ecdfb3fcaec020c7a479ff63e6c4333d89d11d67ecbd96b2b3 Status: Downloaded newer image for mcr.microsoft.com/windows/nanoserver:10.0.14393.2430 mcr.microsoft.com/windows/nanoserver:10.0.14393.2430 </pre> <br /> <hr style='width: 50%' /><br /> <br /> 결국, 여러분들이 nanoserver를 기반으로 한 Dockerfile을 만들 때 사용할 기반 이미지의 태그를,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > FROM mcr.microsoft.com/windows/nanoserver<span style='color: blue; font-weight: bold'>:1809</span> ... </pre> <br /> 주의 깊게 사용해야 합니다. 개발자의 환경에서는 Windows 10을 사용해 1903 nanoserver로 무심코 이미지를 생성할 수 있겠지만, 그것이 실 서버에 올라갈 때는 운영팀에서 (역시 무심코) 올리게 될 환경이 Windows Server 2019 서버일지라도 1809 버전 또는 1903 버전일 수 있으므로 그에 따라 혼란을 야기할 수 있습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 참고로 이와 관련한 공식 문서도 보시고. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Windows container version compatibility ; <a target='tab' href='https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-1909%2Cwindows-10-1909'>https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-1909%2Cwindows-10-1909</a> </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
3852
(왼쪽의 숫자를 입력해야 합니다.)