source

Linux에서 Windows 컨테이너를 호스팅할 수 있습니까?

manycodes 2023. 8. 19. 10:30
반응형

Linux에서 Windows 컨테이너를 호스팅할 수 있습니까?

Linux에서 Windows 컨테이너를 실행할 수 있습니까?시나리오는 에 작성된 응용 프로그램을 기반으로 합니다.NET(이전 넷)과 이를 Docker와 함께 실행하려는 Linux 사용자는net462된 API에 localhost.

Windows용 Docker Desktop 베타 버전을 사용하고 있습니다.

아니요, 그렇다면 왜 Windows는 Linux 컨테이너를 실행할 수 있고 그 반대의 경우는 실행할 수 없습니까?


시간이 지나고 이 질문이 인기 있는 질문이기 때문에 해결 방법은 새 질문을 사용하는 것입니다.NET 표준.그것은 내가 짐을 쌀 수 있게 해주었습니다.4.6.2새 도서관의 틀을 짜세요.

TL;DR:

Q: Windows 컨테이너는 Linux에서 실행할 수 있습니까?

A: 아니요, 그럴 수 없어요

컨테이너는 기본 운영 체제 리소스 및 드라이버를 사용하므로 윈도우즈 컨테이너는 윈도우즈에서만 실행되고 리눅스 컨테이너는 리눅스에서만 실행될 수 있습니다.

Q: Windows용 도커는 어떻습니까?또는 다른 VM 기반 솔루션을 선택하시겠습니까?

A: Windows용 도커를 사용하면 Windows에서 Linux 컨테이너를 실행하는 시뮬레이션을 수행할 수 있지만 후드 아래에는 Linux VM이 생성되므로 Linux 컨테이너는 Linux에서 실행되고 Windows 컨테이너는 Windows에서 실행됩니다.

보너스: Windows에서 Linux 도커 컨테이너를 실행하는 것에 대한 이 매우 좋은 기사를 읽어 보십시오.

Q: 그럼 a를 어떻게 해야 하나요?컨테이너에서 실행하려면 NET Framework 462 응용 프로그램이 필요합니까?

A: 상황에 따라 다릅니다.다음 권장 사항을 고려하십시오.

  • 가능한 경우 로 이동합니다.NET 코어.부터.NET Core는 의 대부분의 주요 기능을 지원합니다.NET Framework 및 .NET Framework 4.8은 마지막 버전입니다.NET 프레임워크

  • 로 마이그레이션할 수 없는 경우.NET Core - @Sebastian이 언급했듯이 라이브러리를 로 변환할 수 있습니다.NET Standard 및 응용 프로그램의 두 가지 버전(하나는 on)이 있습니다.NET Framework 4.6.2 및 에 하나씩 적용됩니다.NET Core - 항상 명확한 것은 아닙니다.Visual Studio는 (다중 타겟팅을 사용하여) 상당히 잘 지원하지만 일부 종속성은 추가적인 주의가 필요할 수 있습니다.

  • (권장치 않음)경우에 따라 윈도우즈 컨테이너를 실행할 수 있습니다.Kubernetes와 같은 플랫폼에서 더 나은 지원과 함께 Windows 컨테이너는 점점 더 성숙해지고 있습니다.하지만 달릴 수 있다는 것은NET Framework 코드, 약 1.4GB를 차지하는 "서버 코어"의 기본 이미지에서 실행해야 합니다.드문 경우지만 코드를 로 마이그레이션할 수 있습니다.NET Core이지만 이미지 크기가 95MB인 Windows Nano 서버에서 계속 실행됩니다.

기록을 위해 이전 업데이트도 남겨둡니다.

업데이트 2: 2018.08

Windows용 Docker를 사용하는 경우 이제 Windows 및 Linux 컨테이너를 동시에 실행할 수 있습니다.

보너스: 질문과 직접 관련이 없지만, 이제 리눅스 컨테이너 자체뿐만 아니라 쿠버네티스와 같은 오케스트레이터도 실행할 수 있습니다: 쿠버네티스는 이제 도커 데스크톱 안정 채널에서 사용할 수 있습니다.

2018년에 업데이트됨

일반적으로 원래의 대답은 옳지만, 몇 달 전에 Docker는 실험 기능 LCOW(공식 GitHub 저장소)를 추가했습니다.

이 게시물에서:

Windows용 Docker는 이미 Linux 컨테이너를 실행하고 있지 않습니까?그렇다.Docker for 윈도우즈는 Linux 또는 윈도우즈 컨테이너를 실행할 수 있으며 Hyper-V Moby Linux VM(Docker for 윈도우즈 17.10 기준)을 통해 Linux 컨테이너를 지원합니다(이 VM은 LinuxKit 기반).

LCOW와 함께 Linux 컨테이너를 실행하기 위한 설정은 Hyper-V Linux VM에서 모든 컨테이너와 함께 Linux Docker 데몬을 실행하는 이전 아키텍처보다 훨씬 간단합니다.LCOW를 사용하면 Docker 데몬이 윈도우즈 프로세스로 실행되며(Docker 윈도우즈 컨테이너를 실행할 때와 동일), Linux 컨테이너를 시작할 때마다 Docker는 Linux 커널이 있는 VM을 실행하는 최소 Hyper-V 하이퍼바이저, runc 및 컨테이너 프로세스를 위에서 실행합니다.

Docker 데몬은 하나뿐이므로 이제 이 데몬은 Windows에서 실행되므로 곧 동일한 네트워킹 네임스페이스에서 Windows Linux Docker 컨테이너를 나란히 실행할 수 있습니다.이를 통해 Windows에서 Docker 사용자를 위한 많은 흥미로운 개발 및 생산 시나리오가 열립니다.

원본:

@Panagiotis Kanavos의 논평에서 언급했듯이 컨테이너는 가상화용이 아니며 호스트 시스템의 리소스를 사용하고 있습니다.따라서 현재로서는 Linux 시스템에서 "있는 그대로" 윈도우즈 컨테이너를 실행할 수 없습니다.

그러나 VM을 사용하면 윈도우즈에서 작동하므로 이 작업을 수행할 수 있습니다.Linux 호스트에 윈도우즈 컨테이너를 실행할 수 있는 윈도우즈 VM을 설치할 수 있습니다.

따라서 IMHO가 운영 환경에서 이러한 방식으로 운영하는 것은 최선의 방법이 아닙니다.

또한답변은 더 자세한 내용을 제공합니다.

아니요. 리눅스에서는 윈도우즈 컨테이너를 직접 실행할 수 없습니다.

그러나 윈도우즈에서 리눅스를 실행할 수 있습니다.

Windows Server 2016 이상은 2016년 9월 베타 서비스 팩 이후 Ubuntu OS의 기본 이미지와 함께 제공됩니다.이것이 바로 Linux를 Windows에서 실행할 수 있는 이유입니다.여기서 확인해 보세요.마지막으로, Linux 컨테이너는 Docker의 Linux Kit으로 Windows에서 실행될 수 있습니다.

트레이 메뉴에서 도커를 클릭하여 OS 컨테이너, Linux 및 Windows 간에 변경할 수 있습니다.

Enter image description here

Enter image description here

Windows용 Docker는 Linux 컨테이너를 완벽하게 실행할 수 있지만 이론적으로는 가능하지만 현실적인 이유로 구현되지 않았습니다.

가장 확실한 것은 Docker for 윈도우즈가 Linux VM을 자유롭게 실행할 수 있는 반면, Docker for Linux는 VM 내에서 실행하려면 Windows 라이센스가 필요하다는 것입니다.

또한 Linux는 완전히 사용자 지정이 가능하기 때문에 Docker for Windows에서 사용하는 Linux VM은 컨테이너를 실행하는 데 필요한 최소 용량만 포함한 몇 MB로 축소되었으며 사용 가능한 최소 Windows 배포 용량은 약 1.5GB입니다.실행 불가능한 크기는 아닐 수도 있지만, 윈도우즈의 리눅스보다 훨씬 번거롭습니다.

Windows 라이센스와 함께 번들로 제공되고 Linux에서 Windows 컨테이너를 실행할 준비가 된 Docker for Linux 버전을 판매하는 것은 분명 가능하지만(이러한 제품이 존재하는지는 모르겠지만), 결국 Windows 벤더에 대한 고정 가격을 비용과 스토리지 공간 모두에서 지불하지 않을 수 없습니다.

솔루션 1 - VirtualBox 사용

이 게시물에서 Muhammad Sahputra가 제안했듯이 Docker 컨테이너 내부의 VirtualBox(그래픽 인터페이스 없이 VBoxHeadless 사용)에서 Windows OS를 실행할 수 있습니다.

또한 VM 네트워크 구성 내의 NAT 설정을 통해 포트 포워딩을 수행할 수 있으므로 Docker 컨테이너로 송수신되는 모든 트래픽을 통과할 수 있습니다.이를 통해 넓은 관점에서 리눅스 시스템 위에서 모든 윈도우즈 기반 서비스를 실행할 수 있습니다.

이것은 도커 컨테이너의 일반적인 사용 사례는 아니지만, 확실히 이 문제에 대한 흥미로운 접근 방식입니다.


솔루션 2 - 와인 사용

간단한 용도로, 그리고 더 복잡한 용도로, 당신은 도커 용기 안에서 와인사용해 볼 수 있습니다.

이 도커 허브 페이지는 목표를 달성하는 데 도움이 될 수 있습니다.


몇 년 전 윈도우에서 도커 머신을 사용했던 것처럼 도커가 네이티브 솔루션을 곧 출시하기를 바랍니다.

컨테이너는 OS 커널을 사용합니다.윈도우즈 컨테이너는 실행하기 위해 프로세스를 사용합니다.이론적으로 말하면, Windows 컨테이너는 Linux에서 실행될 수 없습니다.

그러나 VMstyle 솔루션을 활용할 경우 해결 방법이 있습니다.

Mac에서 VagrantPacker를 사용하는 이 솔루션을 찾았으므로 Linux에서도 작동할 것입니다. https://github.com/StefanScherer/windows-docker-machine

이 Vagrant 환경은 Windows 컨테이너와 함께 MacBook에서 작동하는 Docker Machine을 만듭니다.Docker for Mac 리눅스 컨테이너와 윈도우즈 컨테이너를 쉽게 전환할 수 있습니다.

Running bash commands

Enter image description here

머리 없는 부랑자 상자 만들기

$ git clone https://github.com/StefanScherer/packer-windows
$ cd packer-windows

$ packer build --only=vmware-iso windows_2019_docker.json
$ vagrant box add windows_2019_docker windows_2019_docker_vmware.box

도커 시스템 생성

$ git clone https://github.com/StefanScherer/windows-docker-machine
$ cd windows-docker-machine
$ vagrant up --provider vmware_fusion 2019

Windows 컨테이너로 전환

$ eval $(docker-machine env 2019)

가상화와 달리 컨테이너화는 동일한 호스트 OS를 사용합니다.따라서 Linux에서 구축된 컨테이너는 Windows에서 실행할 수 없으며 그 반대의 경우도 마찬가지입니다.

윈도우즈에서는 컨테이너의 OS와 동일한 OS를 사용하려면 가상화(Hyper-V 사용)의 도움을 받아야 하며, 그런 다음 동일한 OS를 실행할 수 있어야 합니다.

Windows용 Docker는 Hyper-V에 구축되어 Windows에서 Linux Docker 컨테이너를 실행하는 데 도움이 되는 유사한 응용 프로그램입니다.하지만 Linux에서 Windows 컨테이너를 실행하는 데 도움이 되는 것은 없는 것으로 알고 있습니다.

가상 시스템 내에서 윈도우즈 컨테이너를 사용할 수 있습니다(게스트 OS는 윈도우즈 10 Pro 또는 윈도우즈 Server 2016).

예를 들어 VirtualBox를 사용할 수 있습니다.SystemAcceleration반가상화 인터페이스에서 Hyper-V를 활성화하기만 하면 됩니다.

그런 다음 오류로 인해 Docker가 시작되지 않으면 "Windows 컨테이너로 전환...설정에서.

윈도우즈에서 리눅스 컨테이너를 실행할 수 있습니다.Windows용 Docker는 Linux 컨테이너를 용이하게 하기 위해 Hyper-V 기반 Linux-Kit 또는 WSL 2를 백엔드로 사용합니다.

리눅스 배포판에 이러한 종류의 설정이 있는 경우 윈도우즈 컨테이너를 실행할 수 있습니다.리눅스용 도커는 리눅스 컨테이너만 지원합니다.

SQL 서버 및 를 실행할 수 있습니다.리눅스에서 NET Core, 그래서 요즘은 리눅스 컨테이너 안에 있습니다.

참조: Microsoft SQL Server by Microsoft | Docker Hub

Microsoft의 .NET Core | 도커 허브

물론 Linux용으로 컴파일된 버전이 없는 한 질문에 대한 직접적인 대답은 아닙니다.

뭐? 왜?방금 "Debian like" 호스트의 VMM에 Windows 10 PRO를 설치했습니다.VMM은 매우 오래된 가상 시스템 관리자입니다.예, 이 기능을 사용하면 호스트 시스템이 느리게 작동하지만 가상 시스템 내부에서는 모든 것이 정상적으로 빠르게 작동합니다.이것은 개발 중인 윈도우 기능을 사용하기에 좋은 옵션입니다.

언급URL : https://stackoverflow.com/questions/42158596/can-windows-containers-be-hosted-on-linux

반응형