How to run Windows 7 in docker? - windows

Can I run a full Windows 7 or 10 on Docker for Windows?

I am not aware of any fully dockerized Windows 7 OS.
You can acheive that in an indirect way. You can start virualbox inside a container and run Windows7 from there. Check the following Dockerfile to start virtualbox inside a container (Instructions are in the comments)

Docker runs containers. Containers are fundamentally different from a virtual machine. A VM runs an entire operating system. A container is used to run an isolated application with the same host OS kernel. So by definition of the tool, docker cannot run an entire operating system.

Related

Can we run Containers in Linux machine from docker Images built on windows machine?

We have Jenkins Build machines of Windows OS.
But, we have Linux EC2 instances for running our Apps.
So afraid, If we can use the Docker images built on windows to spin up containers in Linux machines.
Windows machine:
docker build -t "app-image-built-on-windows" .
Linux machine:
docker run app-image-built-on-windows
So is Docker images cross platform compatible?
Please give the answers considering the usage in PROD for long time.
if your docker image is linux based then yes you can build on windows.
Windows Subsystem for Linux (WSL) 2 introduces a significant architectural change as it is a full Linux kernel built by Microsoft, allowing Linux containers to run natively without emulation.
and if your build was successful, you can run the container on linux machines.

What is the recommended way to develop docker containers for Linux on Windows?

Background
I am developing a Spring Boot application that will be deployed on Linux Redhat.
As this is a Java application, I can develop on Windows 10 and this is my preference.
To simplify deployment, I have dockerized the application.
Objectives
I would like to test the container on my Windows 10 development computer:
Without installing a VM
Without using Hyper V as a VM.
Without WSL 2.0 (WSL 1.0 can be used)
I need to create a volume so that data written by the container can be accessed on the Windows host during and after the container runs.
The scripts I write to load and run the docker should be as similar as possible as those I will use to deploy on the target Linux Redhat server.
What I have tried
I have installed Docker for Windows on my Windows PC and followed the documentation to allow me to run docker in WSL 1.0.
There are a number of tweaks that need to be done to make this work, and I am still not able to configure a volume to meet my requirement.
Curiously, I happened to try to run the container using docker on from a Windows command prompt and it seems to run too. (though volumes still do not work here either).
This surprised me because I thought that a Linux image can only be loaded into a Linux OS as docker does not run the container in a VM.
My questions
Can I indeed test my Linux container using the Windows prompt or may I run into issues down the road? (issues meaning differences in deployment and run time behavior compared to deployment and running on the Linux target machine).
If a Linux container can run from the Windows prompt, do I even need WSL to run the docker on my windows PC?
What are the advantages, if any, of using WSL to test and test the container in development considering the fact that docker on WSL 1.0 seems to require a little work to get running "flawlessly" on Windows?

Can I run Windows containers on Docker Desktop for Mac? [duplicate]

This question already has answers here:
How can I run a docker windows container on osx?
(3 answers)
Closed 1 year ago.
This post was edited and submitted for review 1 year ago and failed to reopen the post:
Original close reason(s) were not resolved
I want to be able to run Windows Docker Containers on my Mac, it seems this was sort of supported using Docker Toolbox
How can I run a docker windows container on osx?
But it seems that this is now deprecated and we should be using Docker Desktop now.
Docker Desktop has a better and New Hypervisor called HyperKit instead of Virtual Box https://docs.docker.com/docker-for-mac/docker-toolbox/
Docker toolbox allowed starting Windows Containers using VirtualBox, so not sure if that mean's that this is still possible?
I have found a reference to putting Docker Desktop into "Windows Container Mode" here https://www.clearpeople.com/insights/blog/2018/june/sitecore-demo-in-a-docker-container
But I cannot find anywhere to enable this, any help or insight would be very much appreciated.
There is a related question here How can I run a docker windows container on osx? but it's so old that is irrelevant and should not be a reason to lock this question.
Docker only runs natively on Linux machines because it needs Linux kernel features called namespaces and control groups. Docker containers are built from cut down Linux distributions.
The original solution to running Docker on OS X and Windows was Docker Toolkit. This was actually a Linux virtual machine running in the VirtualBox Hypervisor. The VM had Docker installed and could run containers.
Docker Desktop for Mac still makes use of a virtual machine running Linux running in the HyperKit Hypervisor. This virtual machine is lightweight and effectively hidden from the user.
Likewise Docker Desktop for Windows makes use of a virtual machine running in the Hyper-V Hypervisor. It can also run Windows containers.
To run Windows containers you need to have a Windows machine running Docker. The Windows machine can be virtual machine running on a Mac or Linux machine.
I know I am late to the party but as of 2021, this is the easiest setup to get a windows container running on macOS:
https://github.com/StefanScherer/windows-docker-machine
Install vagrant and virtual box
Clone the repository above and change directory into it
vagrant up --provider virtualbox 2019-box
docker context use 2019-box
I followed this setup and I could use the following windows image
mcr.microsoft.com/windows/servercore:ltsc2019
Please note that the windows version of your host must match the container image. This is mentioned here: https://hub.docker.com/_/microsoft-windows
Windows requires the host OS version to match the container OS
version. If you want to run a container based on a newer Windows
build, make sure you have an equivalent host build.

Cant switch Docker OS on Window 8

I have installed the Docker toolbox on Windows 8 and I am able to run Docker containers. However I don't have the Docker icon in the system tray and thus I can't change the Docker settings. Specifically I need to switch the Docker OS from Linux to Windows.
Is there a way how can I get the icon to be shown in the system tray? Has anyone ever had this issue?
Alternatively, is it possible to switch the Docker OS from CLI? According to the Docker forum I need to run SwitchDeamon, however I don't have this tool in the Docker installation folder and VisualStudio is also not able to switch the OS.
See microsoft doc:
Windows Containers include two different container types, or runtimes: Windows Server Containers & Hyper-V Isolation
This means windows container can only work with hyper-v or windows server 2016+, so if you not use server version, windows 10 professional which support hyper-v is a must to run windows container.
With docker toolbox(not docker for windows), you can just use virtualbox to run linux containers. So if you use windows7, windows8, windows10 home edition, then you surely use docker toolbox, then you can just use linux container.
Here also a discussion on docker forums.
As a result, there is no meaning to afford a switch on windows8 as docker toolbox just support linux container.

How can I run a docker windows container on osx?

I'm running docker for mac and want to start up a windows container. From what I see this should work via a virtual machine. But I'm unclear where to find out how to get it to work? Or does it only work for linux containers? Thanks in advance!
docker build nanoserver/
Sending build context to Docker daemon 2.56kB
Step 1/6 : FROM microsoft/nanoserver:10.0.14393.1480
10.0.14393.1480: Pulling from microsoft/nanoserver
bce2fbc256ea: Pulling fs layer
baa0507b781f: Pulling fs layer
image operating system "windows" cannot be used on this platform
I know I am late to the party but as of 2021, this is the easiest setup to get a windows container running on macOS:
https://github.com/StefanScherer/windows-docker-machine
Install vagrant and virtual box
Clone the repository above and change directory into it
vagrant up --provider virtualbox 2019-box
docker context use 2019-box
I followed this setup and I could use the following windows image
mcr.microsoft.com/windows/servercore:ltsc2019
Please note that the windows version of your host must match the container image. This is mentioned here: https://hub.docker.com/_/microsoft-windows
Windows requires the host OS version to match the container OS
version. If you want to run a container based on a newer Windows
build, make sure you have an equivalent host build.
See this link:
https://forums.docker.com/t/how-do-i-start-a-windows-docker-container-on-my-mac-os-x/12953/2
Text if you can't follow the link:
On OS X, get VirtualBox.
Get Windows Server 2016 Tech Preview 5 ISO167 (free download from Microsoft)
Create WS 2016 TP5 VM in virtualbox
Run this206 in the new VM
Now you can run Windows Containers in the VM. To make the setup a little easier to use, see this: https://forums.docker.com/t/windows-server-2016-tp5-docker-server-remote-management/10315/5317
You could also install Bootcamp on your machine which allows you to dual boot your computer between OS X and Windows 10. You could then use the full power of your hardware dedicated to Windows and docker instead of virtualization.
Additionally, you can make the use of VMWare Fusion for Mac OS or Parallels, which allow you to ALSO access the dual boot windows partition from within the Mac OS for maximum flexibility. During installation make sure you do not create a Virtual Machine drive, but instead access the bootcamp partition directly.

Resources