microsoft / Windows-Containers

Welcome to our Windows Containers GitHub community! Ask questions, report bugs, and suggest features -- let's work together.
MIT License
411 stars 64 forks source link

GUI availability on Windows Container #306

Closed incapdns closed 1 year ago

incapdns commented 1 year ago

I have a very basic question.

I am aware that the functionality of RDP and interactive sessions with GUI support has been discontinued in windows containers, but if in the near future it is reintroduced it will be through an update in the Windows image or the resource called "Container" on Host?

I say this because I have my doubts if the functionality broke due to the image (windows server base image) no longer having this resource, or the function of containers referring to isolated processes being unable to reproduce the RDP.

So basically, my question is, was the RDP and GUI broken due to the "Containers" function not supporting such features or due to the image being modified?

[Excuse my English, I'm using google translator]

I would like to thank you in advance, sincerely

Lucas P.

vrapolinario commented 1 year ago

Hi Lucas, Please note that the GUI and RDP functionalities are not broken (although you might have used a word with a different connotation). These functionalities are not present by design. They were removed from the Windows container images and are not supported. We don't have plans on enabling RDP or GUI in the near future and this would require a massive redesign of how we implement Windows containers.

Our recommendation is that if your application requires a GUI or RDP, then you should stick to using VMs. Services like Azure Virtual Desktop, or Azure VMs might be a better fit.

iisfaq commented 1 year ago

Hi Lucas, Please note that the GUI and RDP functionalities are not broken (although you might have used a word with a different connotation). These functionalities are not present by design. They were removed from the Windows container images and are not supported. We don't have plans on enabling RDP or GUI in the near future and this would require a massive redesign of how we implement Windows containers.

Our recommendation is that if your application requires a GUI or RDP, then you should stick to using VMs. Services like Azure Virtual Desktop, or Azure VMs might be a better fit.

Can you provide a link to what is supported and what is not? Maybe some notes where we download the images would help people like myself so I don’t waste my time.

I noticed rdp service is running on windows server 2022 full in a container and 3389 is active using net stat -a.

what has been removed?

Chris

fady-azmy-msft commented 1 year ago

Hey @iisfaq, you can find details about what is not supported on this page.

incapdns commented 1 year ago

I noticed rdp service is running on windows server 2022 full in a container and 3389 is active using net stat -a.

Strange, which version are you running?, in my netstat -a i dont see the port 3389 listening.

gernotpokorny commented 1 year ago

Yeah, this is pretty bad, that this features are not available. it would make much sense to have such features for development especially when a dev team needs a source of truth during development. Containers are perfect for that.

elfoxus commented 1 year ago

Yep, it is pretty bad it has been removed. I could use it for testing purposes...

kyleboddy commented 1 year ago

Agreed. I am in need of this given the fact that there are Windows-only GUI applications in my industry that require heavy GPU load, and renting from cloud computing services typically goes through Docker while they support zero Windows host OS methods, meaning they're all unusable for me.

wizpresso-steve-cy-fan commented 7 months ago

@fady-azmy-msft Where can we pledge for this to be implemented again? We want to use this so that we can have a quick debug session on production, i.e. using it to catch a live bug. We are not sure if we can technically use VS code remotely for this, but having a RDP session is clearly the quickest way to achieve that.

vrapolinario commented 7 months ago

Let me clarify my previous statement of "They were removed from the Windows container images". These are removed from the Windows containers images when we build these images for publishing. As I mentioned, this is by design and have never been supported, so technically, this is a request for a new feature. Here is the right place to make this request and the team is seeing this.

With that said, I wanted to clarify two things: First, the Server image (the larger one at mcr.microsoft.com/windows/server:ltsc2022) does provide the GUI APIs. You don't have the GUI itself, neither RDP, but if your app runs in the background and needs access to the API, it should work. Second, this same image also supports GPU. This is not supported on AKS yet, but you should be able to spin up a Windows node and make the GPU available to the Windows container via DirectX.

kyleboddy commented 7 months ago

The use case I have requires the window to be drawn/rendered for it to be usable, unfortunately.

ntrappe-msft commented 6 months ago

As @vrapolinario mentioned, Windows Containers were designed to not have RDP or GUI support. It would go against the use cases we had in mind. However, we do know that many people have requested this as a feature.

KazFraser commented 6 months ago

Not meaning to revive a dead issue, but from what I understand, Windows Sandbox is built on container technology, so I find it a bit strange that this functionality cannot be used outside of the sandbox.

ohault commented 4 months ago

It's a shame and if Windows Container and we can no longer run Windows applications in Windows Containers, why continue to call them Windows Containers!

vrapolinario commented 4 months ago

Hey folks, keep in mind that while Windows containers and Sandbox might share have some similarities, they are not the same tech and were not built with the same goals in mind. Windows containers never supported RDP neither GUI apps. While we have heard from customers that this is something you'd like to see, we never supported RDP nor GUI on Windows containers. While we keep the internal debate on this support, our statement hasn't changed. You can absolutely run Windows applications on Windows containers - in fact one of the main scenarios for Windows containers is to take server-side applications that run as processes or services (think background, server apps) that exist to today on VMs and move them to containers.

Thank you for the continued feedback, just please keep these in mind as this space is focused on Windows containers.

ohault commented 4 months ago

T

Hey folks, keep in mind that while Windows containers and Sandbox might share have some similarities, they are not the same tech and were not built with the same goals in mind. Windows containers never supported RDP neithwher GUI apps. While we have heard from customers that this is something you'd like to see, we never supported RDP nor GUI on Windows containers. While we keep the internal debate on this support, our statement hasn't changed. You can absolutely run Windows applications on Windows containers - in fact one of the main scenarios for Windows containers is to take server-side applications that run as processes or services (think background, server apps) that exist to today on VMs and move them to containers.

Thank you for the continued feedback, just please keep these in mind as this space is focused on Windows containers.

Thank you for your answer, but I have to underline why I don't agree, and I'm far to be alone.

Can you please wake up the Windows Containers team ? e.g. they should take a look at the WSLg architecture.

vrapolinario commented 4 months ago

Thanks @ohault. Not sure where you got the info for your note #1 above. We might have made an update to further remove components that should never have been there, but that doesn't change the fact that RDP and GUI were not present and were never supported. We have stated that since the beginning of Windows containers in Windows Server 2016. On note #2 you can see that we did check for customer sentiment (which we continue to do) on this topic. It's more than clear to us that there is a customer scenario, but we do have technical limitations to implement this so it's not something trivial. We will continue to evaluate, but no time frame on this at this moment.

As for your item #3, we're fully aware that customers will find workarounds to run their applications. Please note WINE runs on Linux so it's not something we support or can provide an opinion on. This is totally under the customer responsibility. Now, As alternative to running GUI apps, the video itself mentions other options that we do recommend, VDI, upgrade the code base. While not ideal, these are the options since Windows containers can't be used to run these type of applications.

Once again, we appreciate you giving your perspective and feedback. We definitely take this into consideration for future planning.

mussolene commented 4 months ago

Hi. Then I would like to understand whether it is possible to use third-party resources such as VNC access to the desktop.? Or is it also not possible to do this?

vrapolinario commented 4 months ago

We can't comment on third-party components as we don't own them. You might want to reach out directly to them. What I can say for sure is: If there's a mechanism that emulates the GUI for Windows containers, it's doing so in its own way with no Microsoft support. If customers are comfortable on relying on those tools, their vendors, or their support, that's outside of Microsoft's capacity - as long as there are no violations to EULA, usage rights, etc. Furthermore, you might be familiar with tools that do this for Windows outside of container environments that will simply not work with containers because the APIs needed for these tools to work are simply not there, so it's a test and trial scenario.

mussolene commented 4 months ago

That is, there is no access to the GUI?

vrapolinario commented 4 months ago

Two-part answer:

If you are asking: Can I as a user access the GUI of a Windows container to open my app? The answer is no. Neither via GUI nor RDP. If you are asking: Is there any way to access the GUI? Then the Server image does provide the GUI APIs. This is intended for UI testing or other purposes like that. You could, for example, run a CI/CD pipeline using an automated UI testing tool that validates if your app runs and even check for UI validation. This is done without opening the GUI/UI and we have reports of internal teams at Microsoft and customers doing it.

ohault commented 4 months ago

That is, there is no access to the GUI?

AFAIK, since a specific update, Microsoft has stopped to provide an interactive session in Windows Containers for a mysterious and very controversial reason. It's a double shame because in one hand it is hiding the true reason of such a choice and in the other hand it is an evidence of lack of understanding of what the technology should provide. Just ask among others MS teams, to the Azure app service team why they drop support of Windows Containers. The basic would have been to start documenting the ALL distinct technologies used for isolation (the nobel gases). A real reset of Windows Container team is expected. In the while, you can use this or something similar - https://youtu.be/xhGYobuG508?si=u20xrF3bkUL0a5Lm

Isn't it promising ? WSLg team could help to even avoid RDP and provide hardware acceleration support with DWM integration.

GodGavin commented 1 month ago

This is purely a deliberate act by Microsoft for profit considerations, and Microsoft is truly despicable.