Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 291. Windows Server Containers 소개 [링크 복사], [링크+제목 복사]
조회: 16118
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

Windows Server Containers 소개

지난 글에서 Windows 10 환경의 docker 체험을 해봤는데요.

Windows 10에서 경험해 보는 Windows Containers와 docker
; https://www.sysnet.pe.kr/2/0/11013

아무래도 nanoserver만 가능하다 보니 활용성이 많이 떨어집니다. 이번에는 windowsservercore 이미지도 가능한 "Windows Server 2016" 환경에서 실습을 좀 더 해보겠습니다. (단지, 아직 정식 버전은 아니고 공개된 Technical Preview 5로 합니다. 윈도우 업데이트도 모두 받은 상태!)

준비 절차는 윈도우 10과 유사합니다. Containers 기능을 켜고,

PS C:\Windows\system32> Install-WindowsFeature containers

Success Restart Needed Exit Code      Feature Result                               
------- -------------- ---------      --------------                               
True    Yes            SuccessRest... {Containers}                                 
WARNING: You must restart this server to finish the installation process.

재시작을 한 후,

Restart-Computer -Force

docker를 설치합니다. 이번에도 (향후 안정화 될 것을 대비해) 문서상으로는 다음과 같이 하면 되지만,

Invoke-WebRequest "https://get.docker.com/builds/Windows/x86_64/docker-latest.zip" -OutFile "$env:TEMP\docker-latest.zip" -UseBasicParsing

Expand-Archive -Path "$env:TEMP\docker-latest.zip" -DestinationPath $env:ProgramFiles

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

&  $env:ProgramFiles\docker\dockerd.exe --register-service

Start-Service docker

"Windows Server 2016 TP5에서 Windows Containers의 docker run 실행 시 encountered an error during Start failed in Win32" 글에서 쓴 사정으로 인해 바이너리는 직접 다음과 같이 받아줍니다.

Invoke-WebRequest https://master.dockerproject.org/windows/amd64/docker.exe -OutFile $env:ProgramFiles\docker\docker.exe
Invoke-WebRequest https://master.dockerproject.org/windows/amd64/dockerd.exe -OutFile $env:ProgramFiles\docker\dockerd.exe

이제 Container OS Image를 다운로드 받아야 하는데요. "docker pull"을 쓰던 Windows 10과는 달리 Windows Server 2016에서는 한가지 방법을 더 제공합니다. "docker pull"은 Windows 10에서 알아봤으니 이 글에서는 후자의 방법으로 설명해 보겠습니다.

이를 위해 우선, Container image package provider를 설치해야 합니다. 이는 다음의 명령어로 가능하며,

PS E:\docker> Install-PackageProvider ContainerImage -Force


Name                           Version          Source           Summary                                   
----                           -------          ------           -------                                   
ContainerImage                 0.6.4.0          PSGallery        This is a PackageManagement provider mo...

설치된 package provider에서 제공하는 Container 이미지 목록은 이렇게 확인할 수 있습니다.

PS E:\docker> Find-ContainerImage

Name                           Version          Source           Summary                                   
----                           -------          ------           -------                                   
NanoServer                     10.0.14300.1016  ContainerImag... Container OS Image of Windows Server 20...
WindowsServerCore              10.0.14300.1000  ContainerImag... Container OS Image of Windows Server 20...

그렇군요. NanoServer와 WindowsServerCore를 기반 Image OS로 사용할 수 있습니다.

이 중에서 WindowsServerCore를 기반 이미지로 설치하는 방법은 다음과 같습니다. (시간이 꽤 걸리니 차 한잔 드시고 오세요. ^^)

PS C:\Windows\system32> Install-ContainerImage -Name WindowsServerCore
WARNING: Based on customer feedback, we are updating the Containers PowerShell module to better align with Docker. As part of that some cmdlet and parameter names may change in future releases. To learn more about these changes as well as to join in the design process or provide usage feedback please refer to http://aka.ms/windowscontainers/powershell

그런 다음 docker 서비스를 재시작하면 docker NT 서비스도 ContainerImage를 인식하게 됩니다.

PS C:\Windows\system32> Restart-Service docker

PS C:\Windows\system32> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
windowsservercore   10.0.14300.1000     2b824ea36a88        12 weeks ago        9.354 GB

nanoserver도 Image로 다운로드 받을 수 있습니다. (이건 좀 빠릅니다. ^^)

PS C:\Windows\system32> Install-ContainerImage -Name NanoServer

PS C:\Windows\system32> Restart-Service docker

PS C:\Windows\system32> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
windowsservercore   10.0.14300.1000     2b824ea36a88        12 weeks ago        9.354 GB
nanoserver          10.0.14300.1016     a26adab76348        12 weeks ago        810.2 MB

주의할 것은, "docker pull"과 "Install-ContainerImage" 간에는 3가지 차이점이 있다는 것입니다. 첫 번째는, "docker pull"로 받았을 때와 달리 Install-ContainerImage로 받으면 컨테이너의 이름에 "microsoft" 접두사가 없다는 것입니다. 예를 들어, 지난 글에서 windows 10의 "docker pull"로 받은 이미지를 "docker images"로 확인한 결과는 이렇습니다.

C:\Windows\system32>docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
microsoft/nanoserver   latest              3a703c6e97a2        7 weeks ago         969.8 MB

보는 바와 같이 "microsoft" 접두사가 있습니다. 두 번째 차이점은 "TAG"가 "docker pull"로 받으면 "latest"인 반면, Install-ContainerImage로 하면 버전 정보가 된다는 점입니다. 마지막으로 세 번째는 "CREATED" 날짜가 다릅니다. 그걸로 예상해 보건대 "docker pull"과 "Install-ContainerImage"의 대상이 되는 Container registry가 다른 것이 아닌가 싶습니다. 날짜 상으로 보면, docker pull로 받은 이미지가 7주 전에 업데이트되었던 반면, Install-ContainerImage로 받은 것은 더 오래된 12주 전입니다.




Windows 10에서의 실습과 마찬가지로 Container Image를 설치했으니 이것만으로도 실행을 할 수 있습니다. 그런데, 이번에는 지난번 실습과 달리 다음과 같이 명령을 내리면 오류가 발생합니다.

C:\Windows\system32>docker run windowsservercore ipconfig
Unable to find image 'windowsservercore:latest' locally
Pulling repository docker.io/library/windowsservercore
docker: Error: image library/windowsservercore:latest not found.
See 'docker run --help'.

왜냐하면 위에서도 언급했지만 "TAG" 명이 다르기 때문입니다. "docker run"의 대상으로 이름을 준 경우 기본적으로 TAG 값이 "latest"인 것을 실행해 주는데 Install-ContainerImage로 설치한 경우 버전 명으로 TAG가 지정되었기 때문에 찾을 수 없어 오류가 발생합니다. 대신 이런 경우 "IMAGE ID" 값으로 직접 실행할 수 있습니다.

docker run 2b824ea36a88 ipconfig

물론 이름으로도 실행할 수 있습니다. 이런 경우 TAG가 latest인 것을 만들어주면 됩니다. 가령 다음의 명령어는 IMAGE ID == 2b824ea36a88인 것을 latest로 하나 더 명명해 주는 것을 추가합니다.

docker tag 2b824ea36a88 windowsservercore:latest

그럼 다음과 같이 실행할 수 있습니다.

docker run windowsservercore ipconfig

하지만, 현재(2016-08-07 기준) 다음의 글과 같은 사유로 인해 이에 대한 실습이 되질 않습니다.

Windows Server 2016 TP5에서 Windows Containers의 docker run 실행 시 encountered an error during Start failed in Win32
; https://www.sysnet.pe.kr/2/0/11015

따라서, 이 글에서는 그냥 Install-ContainerImage가 있다는 것과 TAG라는 것에 대한 것만 알아두시고 "docker pull"로 다시 "microsoft/windowsservercore", "microsoft/nanoserver"를 받습니다.

docker pull microsoft/windowsservercore
docker pull microsoft/nanoserver

그렇게 하면 이제부터 다음과 같이 잘 실행이 됩니다. ^^


C:\Windows\system32>docker run microsoft/windowsservercore ipconfig

Windows IP Configuration


Ethernet adapter vEthernet (Temp Nic Name):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::9c9b:52e:5dbf:3f61%17
   IPv4 Address. . . . . . . . . . . : 172.25.254.255
   Subnet Mask . . . . . . . . . . . : 255.240.0.0
   Default Gateway . . . . . . . . . : 172.16.0.1

만약 "Install-ContainerImage"로 설치한 것이 잘 되었다면 다음과 같이 명령을 실행하면 됩니다. (microsoft 접두사가 없다는 것에 유의하세요.)

docker run windowsservercore ipconfig




자, 그럼 이제부터는 Windows 10에서 미뤄두었던 실습을 하나 더 해보겠습니다.

windowsservercore 이미지는 그 자체로 IIS 기능이 아직 설치되지 않은 상태입니다. 물론 이를 위해 windowsservercore를 command 쉘로 실행하고 그 내부에서 IIS를 활성화할 수도 있겠지만, 이미 IIS 설정을 추가하는 또 다른 docker Container Image를 이용하면 이를 쉽게 할 수 있습니다.

따라서 다음과 같이 iis 이미지를 다운로드 받습니다.

C:\Windows\system32>docker pull microsoft/iis
Using default tag: latest
latest: Pulling from microsoft/iis
1239394e5a8a: Already exists
847199668046: Pull complete
4b1361d2706f: Pull complete
Digest: sha256:1d64cc22fbc56abc96e4b7df1b51e6f91b0da1941aa155f545f14dd76ac522fc
Status: Downloaded newer image for microsoft/iis:latest

C:\Windows\system32>docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
microsoft/iis                 latest              accd044753c1        2 days ago          7.907 GB
microsoft/windowsservercore   latest              02cb7f65d61b        7 weeks ago         7.764 GB
microsoft/nanoserver          latest              3a703c6e97a2        7 weeks ago         969.8 MB

용량은 7.9GB이지만 설치 속도는 windowsservercore 이미지와 비교도 안되게 빠릅니다. 즉, windowsservercore 의존성을 동반한 크기입니다. 그리하여 다음과 같이 실행해 볼 수 있습니다.

docker run -p 8090:80 microsoft/iis ping -t localhost
("ping localhost"가 아닌 "ping -t localhost"를 한 것은 컨테이너 실행 후 멈추지 않도록 하기 위함입니다.)

잠시 후 "ping -t localhost"의 결과가 명령행 창에 나타나기 시작하면 이제 IIS 이미지가 docker에서 Container로 실행상태가 된 것이고, 다른 컴퓨터에서 해당 docker run을 실행 중인 PC의 [IP:8090]로 웹 브라우저를 이용해 방문하면 다음과 같이 IIS 서비스 가동 여부를 확인할 수 있습니다.

winsrv_containers_1.png

이 때 재미있는 것은, docker run을 호스팅 중인 컴퓨터 내에서는 "http://192.168.0.41:8090"이라고 해도 접근이 안됩니다. (즉, 오로지 외부에서만 접근할 수 있는 포트포워딩 서비스가 되는 것입니다.) 또한, docker run 실행 중인 명령행 창에서 "Ctrl + C" 키를 눌러 실행을 중지해도 실제로는 중지되지 않고 여전히 background로는 살아 있습니다. 그래서 docker ps로 확인하면 다음의 결과를 볼 수 있습니다.

C:\Windows\system32> docker ps

CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                  NAMES
3c80d8db6911        microsoft/iis       "ping -t localhost"   7 minutes ago       Up 6 minutes        0.0.0.0:8090->80/tcp   loving_morse

이 작업을 중지하려면 "rm [Container Name]" 명령을 사용해야 합니다.

docker rm -f loving_morse

참고로, 실행 시 "-d" 옵션을 주면 실행 세션 ID를 출력하고 곧바로 제어를 반환합니다. (이때의 실행은 dockerd.exe NT 서비스가 대행합니다.)

C:\Windows\system32>docker run -d -p 8090:80 microsoft/iis ping -t localhost
5dce546003185155499b939aaabb5163e30b827b2a2f9112999005e4ea302640

C:\Windows\system32>




여기까지 읽었으면 이제 docker와 Windows Server Containers의 활용법을 대충 짐작하실 수 있을 것입니다.

설명을 위해 docker search microsoft 결과를 보겠습니다.

C:\WINDOWS\system32> docker search microsoft


NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
microsoft/aspnet                              ASP.NET is an open source server-side Web ...   464                   [OK]
microsoft/dotnet                              Official images for working with .NET Core...   207                   [OK]
mono                                          Mono is an open source implementation of M...   172       [OK]
microsoft/azure-cli                           Docker image for Microsoft Azure Command L...   61                    [OK]
microsoft/iis                                 Internet Information Services (IIS) instal...   25        
microsoft/mssql-server-2014-express-windows   Microsoft SQL Server 2014 Express installe...   23        
microsoft/nanoserver                          Nano Server base OS image for Windows cont...   11        
microsoft/windowsservercore                   Windows Server Core base OS image for Wind...   8         
microsoft/dotnet-preview                      Preview bits for microsoft/dotnet image         5                     [OK]
microsoft/oms                                 Monitor your containers using the Operatio...   5                     [OK]
microsoft/applicationinsights                 Application Insights for Docker helps you ...   3                     [OK]
microsoft/sample-nginx                        Nginx installed in Windows Server Core and...   2         
microsoft/sample-node                         Node installed in a Nano Server based cont...   2         
microsoft/sample-redis                        Redis installed in Windows Server Core and...   2         
microsoft/dotnet35                                                                            2         
microsoft/sqlite                              SQLite installed in a Windows Server Core ...   1         
microsoft/sample-httpd                        Apache httpd installed in Windows Server C...   1         
microsoft/sample-mongodb                                                                      1         
microsoft/sample-mysql                        MySQL installed in Windows Server Core and...   1         
microsoft/sample-dotnet                       .NET Core running in a Nano Server container    1         
microsoft/sample-golang                       Go Programming Language installed in Windo...   0         
microsoft/sample-python                       Python installed in Windows Server Core an...   0         
microsoft/sample-ruby                         Ruby installed in a Windows Server Core ba...   0         
microsoft/dotnet-nightly                      Preview bits of the .NET Core CLI               0                     [OK]
microsoft/sample-rails                        Ruby on Rails installed in Windows Server ...   0         

여러분이 만약 ASP.NET 개발자라면 "microsoft/aspnet" 이미지를 추가로 다운로드 받아 그 컨테이너를 실행시키고 내부에 여러분들의 웹 사이트 프로그램을 복사한 후 해당 컨테이너에 또 다른 이름을 붙이면 됩니다.

그렇게 이름붙은 컨테이너를 docker에 배포하든지, 여러분들의 사설 docker registry에 배포한 후 서비스를 수행할 서버에서 "Windows Containers" 기능을 켠 후 저 컨테이너를 설치해 곧바로 서비스를 수행할 수 있습니다.

이거저거 일일이 설정할 필요 없이 특정 컴퓨터에서 곧바로 컨테이너를 구동할 수 있게 된 것입니다. 게다가 성능도 VM위에서가 아닌, Host 컴퓨터의 자원을 직접 이용하면서.

이렇게 새로운 Container Image를 만드는 것에 대해서는 다음의 문서를 참조하세요.

Dockerfile on Windows
; https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile

그런데, 위의 과정을 보면서 결국 windowsservercore OS 이미지를 다운로드 받고 추가로 iis 이미지를 다운로드 받는 걸로 봐서는 왠지 Virtual Machine 구동하는 것과 별반 달라 보이지 않습니다. 저도 아직 Windows Containers 구조에 대해 확실한 이해는 못하고 있지만 이는 간단한 테스트로 확인할 수 있습니다.

가령, OS 이미지를 다운로드 받은 경로는 대략 다음과 같습니다.

"C:\ProgramData\Microsoft\Windows\Images\CN=Microsoft_WindowsServerCore_10.0.14300.1000" 

이 폴더를 지우면 어떻게 될까요? (저처럼) 호기심 있는 분은 한번 시도해 보세요. ^^

결과를 말하자면, 많은 파일들이 삭제되지만 일부 파일은 잠겨 있다면서 지워지지 않습니다. 그리고, 지워진 많은 파일들 중에는 "Windows Containers"를 호스팅 중인 운영체제의 파일도 담겨 있습니다. 즉, 서로 연결되어 있는 것이고 호스팅 중인 운영체제의 dll들이 로드된 것들도 있으므로 "C:\ProgramData\Microsoft\Windows\Images\CN=Microsoft_WindowsServerCore_10.0.14300.1000" 폴더 내부의 일부 dll들도 잠겨진 걸로 나오는 것입니다. (이미지 폴더를 삭제 시도해 보았다면, 호스팅 운영체제를 다시 설치해야 합니다.)

이렇게 보면, 왜 windowsservercore가 Windows 10에서는 구동되지 않는 것인지 이유를 대충 짐작해볼 수 있습니다. ^^




문서에서는 IIS 이미지를 받을 때 :windowsservercore를 명시하는 식으로 나오는데, 정작 이렇게 해보니 현재(2016-08-07) 다음과 같은 오류가 발생합니다.

C:\Windows\system32>docker pull microsoft/iis:windowsservercore
Error response from daemon: manifest unknown: manifest unknown

다행히 windowsservercore 태그는 생략해도 됩니다.

C:\Windows\system32>docker pull microsoft/iis
Using default tag: latest
latest: Pulling from microsoft/iis
1239394e5a8a: Already exists
847199668046: Pull complete
4b1361d2706f: Pull complete
Digest: sha256:1d64cc22fbc56abc96e4b7df1b51e6f91b0da1941aa155f545f14dd76ac522fc
Status: Downloaded newer image for microsoft/iis:latest

이런 경우, 의존성을 명시하지 않았으므로 nanoserver와 windowsservercore 중에 자동으로 windowsservercore에 의존성을 가진 iis 이미지가 다운로드 된다고 합니다.




Install-ContainerImage를 실행하면 "https://pshctnoncdn.blob.core.windows.net/pshctcontainer/SearchContainerImages.txt" 경로의 파일을 다운로드 받습니다. 내용은 이렇고.

[
    {
        "Name":  "NanoServer",
        "Version":  "10.0.14300.1016",
        "Description":  "Container OS Image of Windows Server 2016 Technical Preview 5 : Nano Server Installation",
        "SasToken":  "https://az887518.vo.msecnd.net/pshctcontainer/NanoServer-10-0-14300-1016.wim"
    },
    {
        "Name":  "WindowsServerCore",
        "Version":  "10.0.14300.1000",
        "Description":  "Container OS Image of Windows Server 2016 Technical Preview 5 : Windows Server Core Installation",
        "SasToken":  "https://az887518.vo.msecnd.net/pshctcontainer/WindowsServerCore-10-0-14300-1000.wim"
    }
]




ContainerImage를 지우고 삭제하기를 반복하다 보면, 어느 순간 새롭게 설치하는 경우 다음과 같이 오류가 발생할 수 있습니다.

PS C:\Windows\system32> Install-ContainerImage -Name NanoServer
Base image 'CN=Microsoft_NanoServer_10.0.14300.1016' already exists at 'C:\ProgramData\Microsoft\Windows\Images\CN=Microsoft_NanoServer_10.0.14300.1016'.
At C:\windows\system32\windowspowershell\v1.0\Modules\Containers\1.0.0.0\Containers.psm1:84 char:13
+             throw "Base image '$imageFullName' already exists at '$im ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Base image 'CN=....0.14300.1016'.:String) [], RuntimeException
    + FullyQualifiedErrorId : Base image 'CN=Microsoft_NanoServer_10.0.14300.1016' already exists at 'C:\ProgramData\Microsoft\Windows\Images\CN=Microsoft_NanoServer_10.0.14300.1016'.

분명히 "docker images"로 확인해 보면 등록되어 있지 않은 상태입니다.

PS C:\Windows\system32> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

이런 경우, Uninstall-ContainerOSImage 명령어를 이용해 명시적으로 삭제할 수 있다고 합니다.

Uninstall-ContainerOSImage -FullName CN=Microsoft_NanoServer_10.0.14300.1016




PowerShell에서는 "docker run -it" 옵션의 테스트를 할 수 없습니다. 이런 경우, 다음과 같이 그냥 명령행을 빠져나오고 백그라운드에도 실행되어 있지 않습니다.

PS C:\Windows\system32> docker run -it microsoft/windowsservercore cmd

PS C:\Windows\system32> docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

PS C:\Windows\system32> 




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/17/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13602정성태4/20/2024220닷넷: 2244. C# - PCM 오디오 데이터를 연속(Streaming) 재생 (Windows Multimedia)파일 다운로드1
13601정성태4/19/2024257닷넷: 2243. C# - PCM 사운드 재생(NAudio)파일 다운로드1
13600정성태4/18/2024300닷넷: 2242. C# - 관리 스레드와 비관리 스레드
13599정성태4/17/2024451닷넷: 2241. C# - WAV 파일의 PCM 사운드 재생(Windows Multimedia)파일 다운로드1
13598정성태4/16/2024442닷넷: 2240. C# - WAV 파일 포맷 + LIST 헤더파일 다운로드2
13597정성태4/15/2024509닷넷: 2239. C# - WAV 파일의 PCM 데이터 생성 및 출력파일 다운로드1
13596정성태4/14/2024859닷넷: 2238. C# - WAV 기본 파일 포맷파일 다운로드1
13595정성태4/13/2024989닷넷: 2237. C# - Audio 장치 열기 (Windows Multimedia, NAudio)파일 다운로드1
13594정성태4/12/20241033닷넷: 2236. C# - Audio 장치 열람 (Windows Multimedia, NAudio)파일 다운로드1
13593정성태4/8/20241052닷넷: 2235. MSBuild - AccelerateBuildsInVisualStudio 옵션
13592정성태4/2/20241209C/C++: 165. CLion으로 만든 Rust Win32 DLL을 C#과 연동
13591정성태4/2/20241169닷넷: 2234. C# - WPF 응용 프로그램에 Blazor App 통합파일 다운로드1
13590정성태3/31/20241073Linux: 70. Python - uwsgi 응용 프로그램이 k8s 환경에서 OOM 발생하는 문제
13589정성태3/29/20241143닷넷: 2233. C# - 프로세스 CPU 사용량을 나타내는 성능 카운터와 Win32 API파일 다운로드1
13588정성태3/28/20241197닷넷: 2232. C# - Unity + 닷넷 App(WinForms/WPF) 간의 Named Pipe 통신파일 다운로드1
13587정성태3/27/20241157오류 유형: 900. Windows Update 오류 - 8024402C, 80070643
13586정성태3/27/20241304Windows: 263. Windows - 복구 파티션(Recovery Partition) 용량을 늘리는 방법
13585정성태3/26/20241096Windows: 262. PerformanceCounter의 InstanceName에 pid를 추가한 "Process V2"
13584정성태3/26/20241050개발 환경 구성: 708. Unity3D - C# Windows Forms / WPF Application에 통합하는 방법파일 다운로드1
13583정성태3/25/20241158Windows: 261. CPU Utilization이 100% 넘는 경우를 성능 카운터로 확인하는 방법
13582정성태3/19/20241421Windows: 260. CPU 사용률을 나타내는 2가지 수치 - 사용량(Usage)과 활용률(Utilization)파일 다운로드1
13581정성태3/18/20241591개발 환경 구성: 707. 빌드한 Unity3D 프로그램을 C++ Windows Application에 통합하는 방법
13580정성태3/15/20241138닷넷: 2231. C# - ReceiveTimeout, SendTimeout이 적용되지 않는 Socket await 비동기 호출파일 다운로드1
13579정성태3/13/20241494오류 유형: 899. HTTP Error 500.32 - ANCM Failed to Load dll
13578정성태3/11/20241631닷넷: 2230. C# - 덮어쓰기 가능한 환형 큐 (Circular queue)파일 다운로드1
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...