Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create base container with full GUI support #27

Closed
vrapolinario opened this issue Jun 22, 2020 · 26 comments
Closed

Create base container with full GUI support #27

vrapolinario opened this issue Jun 22, 2020 · 26 comments
Assignees
Labels
App Compatibility Cross-platform compatibility assurance enhancement New feature or request

Comments

@vrapolinario
Copy link
Contributor

Request from User Voice: https://windowsserver.uservoice.com/forums/304624-containers/suggestions/13785024-create-base-container-with-full-gui-support

@vrapolinario vrapolinario added enhancement New feature or request App Compatibility Cross-platform compatibility assurance labels Jun 22, 2020
@vrapolinario vrapolinario self-assigned this Jun 22, 2020
@agowa
Copy link

agowa commented Jun 24, 2020

As you have asked for some user stories on twitter, I'm going to add it here to:

  1. Administering shitty programmed applications that often also have the status of business critical. Having them within a container will allow scheduling within k8s. And if it crashes k8s will restart it...
  2. Replacement for App-V, RDSH and RDVH. Currently with linux based containers, I often spawn a simple container in some cloud and connect to it over SSH using Xrdp and have a full desktop environment. That is quite handy for interactively testing and debugging connectivity issues or just to try stuff and trash the instance afterwards.
  3. Better scalability for Remote Apps. Instead of every user having a dedicated session host, or all users sharing the same and having individual sessions, we could assign every user applications and upon logon they get assigned to an already running container of that application for there own use. (Scheduling x instances using k8s and some scheduler (in best case also using k8s) assigns users to those instances/pods). Also guacamole or any other html5 based rdp client could be used to provide legacy applications in mostly browser based environments.
  4. Shitty applications without CLI/API that need to be automated using something like Ranorex or AutoIt.
  5. Esp. for shitty applications error messages may just appear on the gui instead of the cli, therefore for debugging purposes reproducing errors on GUI instances (even for otherwise seemingly fine running applications). Many programmers have the assumption, that if they program for windows, that there is always an interactive session and someone that could have a look at it. This assumption obviously often breaks when automating stuff (even the onboard sconfig tool on core server uses gui popups for confirmation dialogs and when invoked in ssh sessions just gets stuck)...
  6. Having active directory, exchange (or any other windows server "feature") containers (I know that this is currently not a thing, but I hope for it) within k8s running on core windows servers (also allowing multiple tenants on the same hosts) and being able to spawn the management tools close to the running services e.g. in the same pod or in a container within the same cluster.
  7. Oh and for developers UI testing

@ghost
Copy link

ghost commented Sep 17, 2020

This issue has been open for 30 days with no updates.
@vrapolinario, please provide an update or close this issue.

@reisbel
Copy link

reisbel commented Oct 7, 2020

@vrapolinario Do you have plans to add this feature to the Windows Containers? When do you expect to release it?

@vrapolinario
Copy link
Contributor Author

While we understand the appeal of the scenarios above, simply adding support for full desktop would make the image even bigger than it is today, and we've been trying to go the opposite direction.

For automated UI testing, we have a Windows image that supports that. And part of the feedback on that image is on the size as well. A full blown Windows container with UI support would be even bigger.

With the above said, our team is investigating how to address the above comments in future releases. We'll close this issue for now as we don't currently have anything to report (expect something in the next semester), but wanted to assure the team is investigating.
Thanks all for the feedback and please keep them coming.

@EighthMayer
Copy link

While we understand the appeal of the scenarios above, simply adding support for full desktop would make the image even bigger than it is today, and we've been trying to go the opposite direction.

Hello! I'm sorry if I'm being intrusive, but I believe that this position (at least as I understood it) makes no sense. If adding a useful feature means making bigger (separate) image, why the size becomes prioritized over said feature? Going to extreme, it is possible to make an image without anything whatsoever, and it's size will be very slim - why not take this route then?

Best regards,
Eighth

@vrapolinario
Copy link
Contributor Author

Sorry I missed this comment. The issue here is the image composition and my previous comment is that we're exploring a way to provide customers with a smaller image size while allowing the option to add new capabilities later. We don't have a timeline on this investigation but we for sure take this feedback into account.

@zdyang
Copy link

zdyang commented May 31, 2021

We are diving into Remote Apps on the cloud. GUI in containers is critical for our deployment.

Look forward to this exciting feature.

@DECBuzz
Copy link

DECBuzz commented Jun 7, 2021

Maybe I don't understand containers, but why do we have to download a Windows image to use a container on Windows. I downloaded the same version on my system hoping Docker would realize starting with the host then run from their to build the changes in a new container. Does Docker have a FROM localhost?

@vrapolinario
Copy link
Contributor Author

Hi @DECBuzz it might be useful for you to take a look at our documentation at http://aka.ms/containers.
Containers run based on a base image and Microsoft provides those base images (either Server Core, Nano Server, Windows, or Server depending on your need). These images have the base OS of the container. The host in this case, different from VMs, has to match the kernel, but all operations on the containers are (no punt intended) contained to environment. Let me know if that answers your question.

@naikrovek
Copy link

naikrovek commented Jul 14, 2021

I'm very curious how much the container images would inflate with RDP added. Maybe if a version of each image without RDP and a version with RDP would make everyone happy. And, maybe the RDP version could just be a layer on top of the standard images.

Windows containers that support RDP would be an absolute good in my world. There are a lot of things that would be made much easier if this were a reality.

@agowa
Copy link

agowa commented Jul 15, 2021

@naikrovek: RDP is already in the container image. It is restricted because of licensing. There are articles on how to "reenable" it. But for obvious reasons that's not something that you want to explain in a licensing audit, nor what you want to run in production.

@DECBuzz
Copy link

DECBuzz commented Jul 15, 2021

I give up on containers being sandoxes for applications and accept them as a replacement for VM technology.

@naikrovek
Copy link

@naikrovek: RDP is already in the container image. It is restricted because of licensing. There are articles on how to "reenable" it. But for obvious reasons that's not something that you want to explain in a licensing audit, nor what you want to run in production.

@agowa338: It used to be, but not anymore. It can't be enabled by any known means, and from what I can tell, it's been removed entirely.

So, yeah my curiosity stands. I wonder how big that support is, and why can't it be a layer on top of the existing images?

@ghost
Copy link

ghost commented Aug 17, 2021

GUI support would make everything better, is there an Docker image with GUI?

@ohault
Copy link

ohault commented Oct 6, 2021

@naikrovek it's like a shame when your only choice is to run a Windows GUI app, under WINE is a Linux container running on WSL on your Windows OS via Remote App! ;.
I'm currently exploring creating a custom tailored base image based on ReactOS and/or Windows binaries for this baseline purpose.

@the-a-man-006
Copy link

After the decades-old Microsoft's attempt with App-V (before even Docker), after Windows Sandbox (which lacks persistent storage and for good), after the cancellation of Windows 10X (which featured app containerization), a base Windows 10 image with full-blown GUI support only seems like the right thing to do; it can make the good old dream of neatly-separated weakly-interacting workloads finally come true. Containerized GUI apps are great too, but for more complex and fast-changing workspaces like a full development suite, the ability to containerize them on a full (graphical) Windows OS image would be super cool!

@ohault
Copy link

ohault commented Jun 13, 2022

This very important ticket should be re-opened.

@naikrovek
Copy link

This is not a priority for Microsoft; this is not even a desire for Microsoft. This was possible previously, and they removed it.
RDP is explicitly stripped from Windows container base images... This isn't happening. Microsoft charges for Terminal Services, and they don't want people hosting GUI containers that can be remoted into. Their "I-can't-believe-they-haven't-purchased-that-company-yet" partnership with Citrix is likely also a reason.

@DECBuzz
Copy link

DECBuzz commented Jun 14, 2022 via email

@ohault
Copy link

ohault commented Jun 14, 2022

@naikrovek, I agree that the current MS position is simply indefensible with this realm of obscurity around all the flavours of Windows Containers technologies (Nobel gases codename -e.g. for Windows Sandbox ) but there is a real technical challenge here. The joke is currently that the working path to support it is to use Docker Desktop with WSL2(+WSLg)+Wine !!!! What I regret is the hypocrisies behind it (no doc, no source file of Windows Containers base images, no tools to create base images, almost no roadmap, no limitations of current implementations explained)

@wiltaylor
Copy link

This would be an important step in enabling windows workloads in devcontainers. No idea why they wouldn't want to make this a priority?

@naikrovek
Copy link

This would be an important step in enabling windows workloads in devcontainers. No idea why they wouldn't want to make this a priority?

because it would mean fewer Terminal Server licenses need to be purchased by customers, or it would damage Microsoft's relationship with Citrix, or it's difficult to implement in a way that works with Docker, or ... etc.

Who knows? They clearly aren't going to do it, though. It would have been done by now.

@wiltaylor
Copy link

Who knows? They clearly aren't going to do it, though. It would have been done by now.

Yeah think you are right. I pretty much have given up on them now. Think VMs are the only way to go for legacy development environments now.

@Agamenox
Copy link

Agamenox commented Jul 2, 2023

GUI Remotes is not a free feature in Windows, they charged for it in Windows Server.... there not way that windows can compete in that with linux, migrate to XRDP

@naikrovek
Copy link

naikrovek commented Jul 2, 2023

GUI Remotes is not a free feature in Windows, they charged for it in Windows Server.... there not way that windows can compete in that with linux, migrate to XRDP

That doesn't mean that they must charge for it in this circumstance. They could easily (relatively speaking) create license terms which allow this for single-user scenarios or for development purposes, and they've apparently chosen not to do that. That's all I wanted this feature for, so that I could have a relatively unmodified base OS and run all of my daily stuff in containers; that would make migration to a new machine, the use of a new machine, or the reinstall of the OS on the current machine a minor disruption to my workflow instead of a major one.

Microsoft have always been very weird about RDP and I don't understand why.

@agowa
Copy link

agowa commented Jul 10, 2023

Also I don't see how such a feature would be any different from the "Windows Sandbox" one besides better usability and better management tools.

Also @Agamenox MS only charges for user sessions, you don't have to pay for a "GUI Remote" if it is "used for administrative purposes only". I don't have the part from the license terms here right now (I don't want to go through them again if I can avoid it 😅), but that's how it was in the license audits for us...

Also session 0 (where services run) had GUI automation support for years but they at some point just broke it and never fixed it afterward. Now input in session 0 is just dropped which makes automating GUI apps kinda annoying, as you have to also script an auto login or an RDP login (or use expensive 3rd party tools that basically do exactly this step like Ranorex, where formerly a small powershell, autoit, or autohotkey script was enough)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
App Compatibility Cross-platform compatibility assurance enhancement New feature or request
Projects
None yet
Development

No branches or pull requests