Azure windows self-hosted agent with docker installed - azure

We are trying to develop Azure windows self-hosted to run Azure pipelines.
However, these agents are deployed on kubernetes. And we want these agents to be able to use docker for build/push operations. meaning we need docker inside docker.
Is it possible to install docker on these windows self-hosted agents ?

You need to set up a self-hosted agent in Azure Pipelines to run inside a Windows Server Core (for Windows hosts), or Ubuntu container (for Linux hosts) with Docker. Detailed steps you may refer to the following link:
https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops

Related

Azure DevOps pipelines Windows VM Agents with Docker

Do Azure DevOps Release Pipelines support Agent Pools using Windows OS based images, which do have Docker preinstalled?
Or is it possible to install Docker on Windows VM agents? According to official docs, installing Docker requires VM reboot, so I assume rebooting the VM would cause whole workflow to crash.
You can install the agent software on your own Windows OS machine and use that as an agent as opposed to the devops pool. It will have access to resources such as docker that are available on the host machine.

Azure DevOps: What's the difference between the "Hosted Linux Preview" and "Hosted Ubuntu 1604" agent pools?

I have some build pipelines that build Linux based Docker images and run on the Hosted Linux Preview pool. Recently I noticed a pool called Hosted Ubuntu 1604. On this page, Hosted Linux Preview is not mentioned, and Ubuntu 1604 is recommended for Docker.
So is Hosted Linux Preview deprecated or are there still reasons to use it? Should I be migrating my pipelines to Hosted Ubuntu 1604?
The Microsoft-hosted agents page now has information on the deprecation of the Hosted Linux Preview pool and how to migrate over to the Hosted Ubuntu 1604 pool. (I'm sure this information wasn't there when I asked this question, but I could be wrong...).

Do I need SSH tunnel to deploy Docker containers from Windows Server 2016 using Full CI/CD pipeline

Thank you very much for your help with the previous questions
Deploying Windows Containers (created with Docker) into Azure Container Service
Windows Container vs Docker Container and Azure Container Services/Kubernetes cluster with Linux OS
I am continuing my research and somewhat at a standstill as I try to follow the instructions of the following article that explains how to create CI/CD pipeline to deploy a multi-container application.
https://learn.microsoft.com/en-us/azure/container-service/dcos-swarm/container-service-docker-swarm-setup-ci-cd
The code sample that is referenced here is built for the Linux application, and I am not able to run it or create Docker container out of it.
Thus, I have following questions (those questions could be all over the place, my apologies for that)
When I create a .Net Core Web API on Windows 2016 server, is there any possibility for me to create an application that I could deploy to a Linux environment? (portable .NET Core Web API application)
When I would like to take advantage of CI/CD pipeline using Visual Studio Team Services, do I really need to create Azure Container Service with Docker Swarm? As far as I understand ACS is a Linux based environment whereas I would create Windows based docker containers on Windows Server 2016
Do I really need to be concerned with ACS and SSH tunnel when dealing with Windows Server 2016 based docker containers if I could easily deploy those containers to a Kubernetes cluster with Windows nodes
Is there an alternative way for me to deploy docker containers created on Windows Server 2016 using Full CI/CD pipeline to Visual Studio Team Services without using the Linux based SSH tunnel/ACS
Thank you very much for your generous input
Mikhail
1.When I create a .Net Core Web API on Windows 2016 server, is there any
possibility for me to create an application that I could deploy to a
Linux environment?
Yes, .Net core is a general purpose development platform maintained by Microsoft and the .NET community on GitHub. It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios. So we can deploy .net core web api app on Linux environment.
Maybe we can refer to this link.
2.When I would like to take advantage of CI/CD pipeline using Visual
Studio Team Services, do I really need to create Azure Container
Service with Docker Swarm?
No, creating a CI/CD pipeline on Azure Container service with kubernetes and visual studio team services is available. More information about VSTS and ACS k8s, please refer to this link.
3.Do I really need to be concerned with ACS and SSH tunnel when dealing with Windows Server 2016 based docker containers if I could
easily deploy those containers to a Kubernetes cluster with Windows
nodes
If you want to use VSTS to deploy your .net core container, I think we should connect to ACS cluster.
If you want to use ACS k8s, we should add kubernetes connection:
4.Is there an alternative way for me to deploy docker containers created on Windows Server 2016 using Full CI/CD pipeline to Visual
Studio Team Services without using the Linux based SSH tunnel/ACS
Do you mean you want to use ACS, but don't want to connect Linux based SSH tunnel? If I am right, we can deploy a site-to-site VPN between your on-prem network and Azure Vnet, in this way, we can connect k8s like local.

How do I configure Service Fabric Cluster on Windows Server 2016 to be able to run Linux Containers?

In one of our project, we have a technical constraint to use Service Fabric as platform to run applications built with Service Fabric SDK. The Service Fabric Cluster will use Windows Server 2016 for the Operating System.
However, the software also are depending on a 3rd party product that run as Docker Container running on Linux Container OS.
The Product Owner would like to have the Container to be deployed on the same Service Fabric cluster for easier management and monitoring.
It is known that Windows Server 2016 are able to run Linux Docker Container using Hyper-V Isolation Technology. How do I configure Service Fabric running on Windows Server 2016 to be able to utilize that technology and run Linux Containers?
Thank you.
Support for running Linux containers directly on WinSrv2016 is on the way. It's not here yet. Therefore you can't run them on SF yet either.
You can't have a hybrid cluster either. So at this time your options is: run two SF clusters.

Can I deploy a docker container to Azure Webapp

I found a lot of resources online on using docker with Azure virtual machines. But didn't find any on using docker with Azure Webapps. Is this possible?
Things are changing fast in the cloud. Since November 2016, it is now possible on linux web apps to run docker containers. You can read about it here. https://buildazure.com/2016/11/18/deploy-docker-containers-to-azure-web-apps-on-linux
No. Web Apps are a Platform-as-a-Service from Azure which use a bespoke packaging and runtime, you can't just create a Web App, point it to a Docker image and run it as a container.
If you want to run Docker on Azure, you can spin up a VM to use as a single host - you can use an Ubuntu image for Linux containers or a Windows Server 2016 image for Windows containers (currently in preview).
To create a Docker Swarm running on Azure you can use Azure Container Service or Docker for Azure.
No, because a webapp is a PaaS that Azure provides, that allows you to push a website with there settings (to simplify it) with ease.
But, you can push a website onto docker using Azure.
Web Apps, running under App Service, is Webapp-as-a-Service. Nothing to do with Docker. It has its specific methods of code deployment built-in, and does not support Docker images.
That's not to say you cannot have Web Apps and Docker images communicate between each other - you can certainly have, say, your database in a Docker container, being called by your Web App.

Resources