Docker Windows Container with Service Fabric on Windows Server - docker

I have a Service Fabric cluster installed on 5 virtual machines which are running Windows Server 2016. I would like to run docker windows container inside my Service Fabric cluster. I'm fairly new to the SF and Docker and I have couple of questions:
To make it work do I have to install Docker on each node? (If so which version CE or EE?) Because when I deploy my SF app with windows container service inside, it gives me an error during application start Error event: SourceId='System.Hosting', Property='Download:1.0:1.0:45cc185a-abde-47f4-9a1f-943ad6e29d23'.
There was an error during download.Container deployment is not supported on the node.
Can I run linux container on Service Fabric installed on Windows Server?

Yes you need to have the Containers feature enabled. Or, when running in Azure, you can use a host with the Containers feature already enabled, e.g. '2016-Datacenter-with-Containers'.
No, you can't do that inside a cluster at this time.
More info:
here
here

Related

Can i use Docker Desktop to manage a VPS running Docker?

I am very new to Docker as a whole.
I have a VPS with Debian 10 Buster, running Docker. I also installed Docker Desktop on my windows 10 pc. I like the GUI, and I googled if i can manage my VPS docker with this application, but found no answear.
Is this possible, or am i missing something obvious?
While I have not been able to connect the Windows 10 Docker Desktop application to my Docker engine running on my Debian 10 VPS, I found an alternative:
portainer.io
This is a service, with a free plan option(CE). You install this docker image following their documentation, and it runs on the host machine, in my case, the Debian VPS. I use this image on port 9000, so all I have to do to access it is open a browser and navigate to http://HOSTIPADDRESS:9000.
There you will find a gui similar to the Docker Desktop application.

Docker inside Windows VirtualBox

here's the thing: I tried to install docker inside a windows which runs inside virtualbox, and off course I failed due it's not possible (now I know this is due Hyper-V not used by virtualbox and required by docker).
Since for me migrating to VMWare ain't an option, I dig a little bit and found out that there's no problem on running docker inside a linux distro (which runs inside a vbox), so here's the question.
Is it possible to run 2 different virtual machines with virtualbox, one with linux (running docker inside it), and the other one with windows as my development environment, both at the same time and to develop on windows and then deploy and run tests on docker? If this is possible, how? Any links or keywords for me to search for would be appreciated.
Sure! You need to do following steps:
You should set your VMs network so then can see easily each other https://superuser.com/questions/119732/how-to-do-networking-between-virtual-machines-in-virtualbox
You should expose docker daemon on TCP socket on VM with linux https://success.docker.com/article/how-do-i-enable-the-remote-api-for-dockerd
On VM with windows you need to create some override for docker client so he will connect to remote daemon on linux machine https://gist.github.com/kekru/4e6d49b4290a4eebc7b597c07eaf61f2#create-bat-file-for-windows
Please keep in mind when you expose some service under ports you won't access that on VM with windows on localhost - instead of that you need to type: :

How to run Docker commands on remote Windows engine

I'm working on integrating Docker into our TeamCity build process so that I can create a task that runs a "docker build" to create an image from our code. Right now, all our build agents run on either Windows Server 2008 or Windows Server 2012, neither of which can run Docker. There's a chance we can get a license for one Windows Server 2016 build machine, but I'm wondering if there's a way to run Docker Engine on that machine while issuing docker commands from other build agents.
Here's what I've considered so far:
Docker Toolkit: This is a way to run Docker on legacy systems, but it spins up a local VirtualBox VM running Linux thus it can only run Linux containers. I need to be able to build and run Windows containers.
Docker Machine: This is a way to talk to a remote Docker engine. However, according to this open bug, it appears Docker Machine is only capable to talking to remote engines on Linux hosts due to security implementations; It's an old issue but I can't find any indication this limitation has been removed.
Docker itself uses a client/server architecture, but I couldn't find any documentation on how to talk to a remote engine without using something like Docker Machine.
Anything else I'm missing, or am I just pretty much out of luck unless we upgrade all our build agents to Windows 10 or Windows Server 2016?
You can start using the remote Windows Server 2016 instance from other build agents.
Docker allows to expose the Docker Engine (aka Daemon) via tcp. In that case and especially when the host is publicly reachable you should consider configuring authentication using client/server certificates. Details can be found in the official documentation at https://docs.docker.com/engine/security/https/, but you may find the Windows Server specific article at https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/ more helpful.
Regarding your aspect of using a client to connect to a remote Docker Engine, please use the -H tls://<host>:<port> argument like described at https://docs.docker.com/engine/reference/commandline/cli/ (or see the example provided at https://stefanscherer.github.io/protecting-a-windows-2016-docker-engine-with-tls/#testtlsconnection).

How to build docker images on AWS EC2 Windows Server instance?

We use Team City to build C# applications on a Windows server in AWS EC2.
Now there is a requirement to build Docker containers using the same system. The build steps have been tested locally and are able to produce a docker image.
Docker is not installing correctly on the server which leads to the builds failing.
Docker Edge supports Windows Server but fails on EC2 due to Hyper-V not functioning correctly.
Docker Toolbox also fails because VT-X/AMD-v are not enabled.
Is there any way to build docker images on an AWS EC2 Windows Server instance?

Run TFS with Docker

I've been reading a lot about Docker and its uses. Currently we are using TFS for building and deploying our in house app (.net c#). Are there any benefits for transitioning to Docker? Meaning having it set up so that after TFS runs the build, it will deploy to a container?
Currently there is no easy way to run the build ourselves besides doing bunch of manual steps: How to: Build Team Projects on a Desktop.
Can you run docker on Windows Server?
Would we be able to setup our VMs with docker so that we can deploy/mimic deployment process locally (to our vms)?
And have the same process set up for our production environment?
Yes, you can run docker on Windows Server, but it cannot run natively on Windows for now.
Because Docker relies on Linux-specific features, you can’t run Docker
natively in Windows. Instead, you must install the Docker Toolbox
application. The application installs a VirtualBox Virtual Machine
(VM), Docker itself, and the Docker Toolbox management tool. These
three things allow you to run Docker on Windows.
For the deployment with docker, refer to this link for details: http://www.colinsalmcorner.com/post/continuous-deployment-with-docker-and-build-vnext
In the meanwhile Microsoft has released their Windows Container feature within Windows Server 2016 and Windows 10 Pro and up. One can start running container natively on Windows. Mind you, you can only run Windows-based container images. So this cannot be leveraged if you want to run Linux-based container images, which currently is still the majority. Unfortunately at this moment one cannot easily filter within Docker Hub on the desired container-base.
Refer to https://learn.microsoft.com/en-us/virtualization/windowscontainers/

Resources