I am developing a microservice application using java 17.Now for docker image I need to choose between following two options
FROM openjdk:17-oracle
FROM openjdk:17-jdk-slim
I understand that slim version will create a lightweight image.But I still want to understand the pros and cons of oracle provided version's.
Which one will be suitable in terms of performance while deploying in azure cloud?
Related
I am using this docker image now:
microsoft/dotnet:2.2.2-aspnetcore-runtime-alpine
I want to upgrade to 2.2.7 but can't manage to find correct tag on docker:
This url https://registry.hub.docker.com/v1/repositories/microsoft/dotnet/tags seems to only have 2.2.2 as the latest version.
It seems that Microsoft has moved to their own docker repository (mcr.microsoft.com/dotnet/core/runtime:2.2) while maintaining documentation on docker hub? I am really confused with what is going on in there.
So I really want to find a corresponding image to my original but version 2.2.7 for both aspnet or ordinary runtime (without aspnet)
Have found out with some help from Panagiotis:
Microsoft has moved all their images to own repository, see more information here. They do reference these images from a documentation on docker hub even though the images are not published there.
Docker images that can be used for dotnet core:
mcr.microsoft.com/dotnet/core/runtime-deps:2.2.3 - use for deploying self-contained deployment apps
mcr.microsoft.com/dotnet/core/runtime:2.2.3 - use for deploying .NET Core console apps
mcr.microsoft.com/dotnet/core/aspnet:2.2.3 - use for deploying ASP.NET Core apps
mcr.microsoft.com/dotnet/core/sdk:2.2.105 - use for building .NET Core (or ASP.NET Core apps)
Short description:
Is it possible to reference an SDK ( or any folder ) in a Docker Container from the Host computer?
Long description:
My team and I work in different environments ( Windows & Mac ) and on different stacks ( Asp .Net MVC / Elixir & Phoenix )
I'm trying to help everyone by creating separate Docker Stacks for each solution ( or group of projects )
What I have been able to do is set up the Docker Stacks so that each solution can be run in 1 or more Docker Containers and the developers can work on the code locally ( using direct host path mounts/volumes ) using an IDE of their choosing.
The issue is different solutions use different SDKs or even different versions of the same SDKs.
So what I would like to do is it up so that anyone in the team could reference the SDK installed on the Docker Container instead of installing the SDKs and each version of the SDKs they need for all the projects.
As far as I can tell, if I create a host mount binding, it will overwrite what's in the container with what's in the host, but I'd like to do it the other way round, I'd like to create a binding between the Docker Container and the Host and have the contents in the Docker Container show up in the Host.
Is this possible? Is there a better way to achieve this?
SDK images from vendors (e.g. asp.net core SDK images from Microsoft) best recommended compile/build time purpose and its lightweight version recommended for runtime in hosting/deployment environment.
Sole purpose of compile/build SDK images is for creating docker runtime images at build stage especially if target runtime OS (linux) is different than development machine OS e.g. Windows. If used efficiently with multistage builder pattern inside dockerfile, can create much lightweight runtime images for hosted environments.
e.g. aspnet.core SDK images used for building docker images and then run locally with host:guest port mapping. But if the dev machine OS is any linux distro then using SDK images is better as you can test validate in multiple SDK images. And these images just need exact name and docker deamon would download auto and use whenever required - that's it but certainly would needs good IDE orchestration support e.g. Visual Studio provides for docker based development on windows 10. or-else simply use docker CLI for build run.
Hope this helps clarify your need if not a solution
I have several micro services that I would like to dockerized them. Is it better to build them in a self-hosted console application or build asp.net web application?
Which one is faster?
My MicroServices are only simple Web Api.
Just gonna give you my experience on this, not necessarily a 'complete answer':
If you create a .NET Core WEB API in Visual Studio and 'Add Docker support', you can directly deploy them to regular AppServices (specify 'Linux' as the operating system when you CREATE the AppService).
The Visual Studio wizard will automatically setup the container registry for your images, and configure the appservice to deploy whenever there's a new tag for your image.
I've also migrated this same Web API to deploy to a Windows AppService without docker, we didn't need to change any of the code, just deploy it without docker as a regular web app.
Which means if you build this as a .NET CORE 2 Web API you can deploy the same code to either a Linux Appservice using Docker or to a regular Appservice.
If you're planning to use anything different than AppServices tho, you might want to check Container services or Service Fabric, which IIRC is more expensive (would make sense if you need to scale this massively)
I'm thinking is there a way to leverage on Dockers concept for my windows base Desktop application. I need to run GUI test, performance test, workflow test etc.. for each build. What I currently do is use Hyper-V with pre setup different OS images.
Is there a easy way to achieve same thing using docker concept. As I know this can be achieve for non GUI application. but how about the GUI base desktop apps.
Is it possible to deploy an OpenCV application to windows azure?
Open CV is comes into client application category accessible through user interface and also can be used for backend processing. Windows Azure Cloud services is used for web application so Open CV does not fit in the application model. For backend processing you may think to use cloud service as worker but that need lots of work on your part and defeat the purpose.
For the sake of completeness and possibility, you sure can get a Windows Azure Virtual Machine, along with Windows OS and deploy OpenCV application there. Once ready you can Remote Desktop to the VM and use it. You may pay monthly cost to use the VM but you sure can do it. But I am sure that is not your objective either.
Yes, I'll say its possible to install OpenCV applications to Azure.
Check the following Deep Learning VM
It comes with pre-installed software. Most of the machine learning libraries along with the OpenCV project are pre-installed
You can also use APIs to host your models on the Windows Azure