Introduction

In April 2018, Microsoft announced that Azure Container Instances (ACI) is now ready for production usage. Azure Container Instances offers the fastest and simplest way to run a container in Azure, without having to provision any virtual machines. With Azure Container Instances, you can easily run containers with a single command and in a few seconds. In the initial ACI preview, Microsoft said that customers were mainly using the services for batch processing and continuous integration. To get information about pricing, please read this page: https://azure.microsoft.com/en-us/pricing/details/container-instances/

ACI lets you create Linux or Windows Containers without the need to deploy a Container host, so in other words, ACI is serverless, and it works like a charm!

So in this article, I will describe how to create a simple Container using Azure Container Instances (ACI). In the first part, I will describe ACI using the Azure Portal and the command line, and in the second part, I will describe Azure Container Registry.

Note: ACI can be controlled by Kubernetes using portable API Connector. You don’t need to run Kubernetes in Azure to use this feature; all you need is a public IP address for the ACI Kubernetes APIs.

Getting Started

How Azure Container Instances works? ACI will simply assign an existing Virtual Machine to your container, so you will be up and running in seconds. Once deployed, your container is up and running with either a public IP address or a private internal address. To go further with Azure Container and orchestration, I advise you to read the following article by Florent Appointaire to learn more about Azure Container Service: https://www.starwindsoftware.com/blog/azure-container-service-how-to-start-correctly or Azure Kubernetes Service (AKS) https://azure.microsoft.com/en-us/blog/introducing-azure-container-service-aks-managed-kubernetes-and-azure-container-registry-geo-replication/

Go to the Azure Portal, and click “Create a resource”, then browse to “Containers” and click “Container Instances”:

A new blade will appear to create the Container Instance. Enter the following information:

Container Name : Enter a friendly name for your Container Instance

: Enter a friendly name for your Container Instance Container Image Type : Depending your needs, but in my case, I want to use a public image from the Docker Hub.

: Depending your needs, but in my case, I want to use a public image from the Docker Hub. Container Image : You must specify the URI or Docker Hub tag of the public image. For instance, you can use the “microsoft/aci-helloworld” image to run a very basic “Hello World!” within your Container.

: You must specify the URI or Docker Hub tag of the public image. For instance, you can use the “microsoft/aci-helloworld” image to run a very basic “Hello World!” within your Container. Subscription : Select your Azure Subscription

: Select your Azure Subscription Resource Group : Select an existing Resource Group or create a new one

: Select an existing Resource Group or create a new one Location: Select the location in which the Container Instance will be located

Once you are ready, click “Next” to configure your Container:

Here, you must configure the Container Instance:

OS Type : Depending your Container Image, you will select “Windows” or “Linux”

: Depending your Container Image, you will select “Windows” or “Linux” Number of cores and Memory : You can customize your Container Instance

: You can customize your Container Instance Networking : If you want to expose your Container Instance on Internet, then select “Yes”

: If you want to expose your Container Instance on Internet, then select “Yes” DNS Name Label : This is the friendly name you will use to reach your Container Instance

: This is the friendly name you will use to reach your Container Instance Port : By default, the port number will be 80. This port will be opened in order to access to your Container Instance.

: By default, the port number will be 80. This port will be opened in order to access to your Container Instance. Open Additional Ports : You can open additional ports but ports 80 and 443 are commonly used for containers.

: You can open additional ports but ports 80 and 443 are commonly used for containers. Restart Policy : Select when your Container Instance should restart: “Always”, “On failure” or “Never”.

: Select when your Container Instance should restart: “Always”, “On failure” or “Never”. Environment variable : You can set some environment variables within the Container.

: You can set some environment variables within the Container. Command override: This is the first command to execute within the Container.

Once you are ready, you can click “OK” and wait until the deployment is finished

You may get the following deployment error during the process:

"DnsNameLabelAlreadyTaken", "message": "The DNS name label 'mycontainer' in container group 'mycontainer' not available. Try using a different label." 1 2 3 "DnsNameLabelAlreadyTaken" , "message" : "The DNS name label 'mycontainer' in container group 'mycontainer' not available. Try using a different label."

Nothing critical, you just have to modify the DNS Name Label and rerun the wizard.

Ok, great the deployment is done, so let’s check the duration. In my case, a very basic Container Instance took only 1 minute 36 seconds, which is awesome.

To access to your Container Instance, copy and paste the FQDN in your favorite browser

Done! The ACI image will display a nice welcome page as shown below:

Azure Container Instances Logs

When the deployment is done, you can check the logs, and then you will see the following steps about the deployment:

Step 1: Pulling image “microsoft/aci-helloworld”

Step 2: Successfully pulled image “microsoft/aci-helloworld”

Step 3: Created container with a specific ID

Step 4: Started container with the ID

You can also check the Container Logs by navigating to “Containers” and then click “Logs”.You should see the HTTP request generated when you viewed the application in your browser.

ACI and Windows PowerShell

For those of you who want to use the command line to deploy a Container, you can use Windows PowerShell to achieve this task.

Firstly, create the resource group with the New-AzureRmResourceGroup cmdlet:

New-AzureRmContainerGroup -ResourceGroupName myResourceGroup -Name mycontainer -Image microsoft/iis:nanoserver -OsType Windows -DnsNameLabel get-cmd-demo 1 New - AzureRmContainerGroup - ResourceGroupName myResourceGroup - Name mycontainer - Image microsoft / iis : nanoserver - OsType Windows - DnsNameLabel get - cmd - demo

Then, wait a few seconds until the Container Instance is created:

Get-AzureRmContainerGroup -ResourceGroupName myResourceGroup -Name mycontainer 1 Get - AzureRmContainerGroup - ResourceGroupName myResourceGroup - Name mycontainer

Now, try to access to your Container using your web browser and you will see the IIS Welcome page:

Azure Container Instances and Azure Container Registry

To go further, keep in mind that you can push your own Container in ACI. To get a local container into Azure Container Instances, you need to put it into a private repository that can be accessed by Container Instances. You can use:

Docker Hub

Azure Container Registry (ACR)

If you want to use ACR, then go to the Azure Portal and Click “Create a resource”, “Containers”, “Container Registry”:

Enter a friendly name for your Container Registry:

The Azure Container Registry is created and I can access to my ACR using the login server: “getcmd.azurecr.io” as shown below:

You must enable the “Admin user” mode in order to generate the password:

Before pushing and pulling container images, you must have a valid Container image on your machine. In my case, I will pull the ACI Demo image from Docker Hub:

docker pull microsoft/aci-helloworld 1 docker pull microsoft / aci - helloworld

Before pushing the image to the Azure Registry, I must tag the image with the ACR login server name:

docker tag microsoft/aci-helloworld getcmd.azurecr.io/aci-helloworld:v1DemoAzure docker images 1 2 docker tag microsoft / aci - helloworld getcmd . azurecr . io / aci - helloworld : v1DemoAzure docker images

Then, I need to log in to my Azure Container Registry. Here, I use the “Docker Login” command as shown below:

docker login getcmd.azurecr.io -u getcmd -p PASSWORD 1 docker login getcmd . azurecr . io - u getcmd - p PASSWORD

Now, I can push the custom image to my Azure Container Registry:

docker push getcmd.azurecr.io/aci-helloworld:v1DemoAzure 1 docker push getcmd . azurecr . io / aci - helloworld : v1DemoAzure

I can confirm that the image exists in my ACR:

I can deploy this image to a new WebApp, or I can use this image during the ACI wizard:

VSAN from StarWind eliminates any need for physical shared storage just by mirroring internal flash and storage resources between hypervisor servers. Furthermore, the solution can be run on the off-the-shelf hardware. Such design allows VSAN from StarWind to not only achieve high performance and efficient hardware utilization but also reduce operational and capital expenses. Learn more about ➡ VSAN from StarWind.

Conclusion

Thanks to this great Azure Service, you can easily deploy your Container into Azure for the following purposes:

Test

Development

Production

You can interact with Azure Container Instances using Azure Codes, go to the following page: https://azure.microsoft.com/en-us/resources/samples/?sort=0&term=aci. These code samples will help you to interact with Azure Services.

Thanks for reading!

Related materials:

Views All Time Views All Time 9 Views Today Views Today 26

Appreciate how useful this article was to you?

5 out of 5, based on 1 review 5 out of 5, based on 1 review

Loading... Loading...