Docker Hub Image Building and Pushing

Feb 20, 2023

What is Docker?

In this article, you will learn to build Docker image from scratch, and deploy and run your application as a Docker container using Dockerfile.Docker allows developers to build, test, and deploy applications quickly and efficiently using isolated and portable containers that run anywhere.

 

How to Create Docker File

In order to build the container image, you’ll need to use a Dockerfile. A Dockerfile is simply a text-based file with no file extension. A Dockerfile contains a script of instructions that Docker uses to create a container image.In a Dockerfile Everything on left is INSTRUCTION, and on right is an ARGUMENT to those instructions. Remember that the file name is "Dockerfile" without any extension.

To create Docker file from visual studio

- Open project folder in visual studio

- Right click on project folder 

- Go to add

- Go to docker support

 

 

- There are two options to build docker file : windows and Linux

- Select one of the given option and it will create the docker file

 

 

Here we have selected windows operating system, so it will create docker file for windows image but if you select Linux operating system then it will create docker file for Linux image and rest of the docker commands will be same for windows as well as Linux

 

How to Build Docker Image

We will build our image using the Docker command. The below command will build the image using Dockerfile from the same directory.

docker build -t demoimage:1.0 .

- t is for tagging the image.

- demoimage is the name of the image.

- 1.0 is the tag name. If you don’t add any tag, it defaults to the tag named latest.

- . means, we are referring to the Dockerfile location as the docker build context.

 

After the image build output will look like below.

Now, we can list the images by using this command.

docker images

 

Test the Docker Image

Now after building the image we will run the Docker image. The command will be,

docker run -d -p 4000:80 --name democontainer2 demoimage:1.0

- d flag is for running the container in detached mode.

- p flag flag for the port number, the format is local-port:container-port.

- --name for the container name, democontainer2 in our case.

 

Docker started our container in the background and printed the Container ID on the terminal.

We can check the running container by using the below command.

docker ps

In a web browser, access http://localhost:4000 and we can see the index page which displays the content in the custom HTML page we added to the docker image.

After creating Docker image we can see all the local images in Docker windows Desktop.

Go to the images tab and we can see all the images.

Go to the containers tab and we can see all the containers also.

Here we are using docker desktop for windows,so we have selected switch to windows option,if you are using docker desktop for Linux then select switch to Linux option.

 

Push Docker Image to Docker Hub

Docker Hub is a registry service on the cloud that allows you to download Docker images that are built by other communities. You can also upload your own Docker built images to Docker hub.To push our Docker image to the Docker hub, we need to create an account in the Docker hub.

After that, execute the below command to log in from the terminal. It will ask for a username and password (if you are login for the first time). Provide the Docker hub credentials.

docker login

After login, we now need to tag our image with the docker username as shown below.

docker tag demoimage:1.0 <username>/<image-name>:tag

For example, here hiral1 is the docker hub username.

docker tag demoimage:1.0 hiral1/demoimage:1.0

Run docker images command again and check the tagged image will be there.

Now we can push our images to the Docker hub using the below command.

docker push hiral1/demoimage:1.0

Now we can check this image will be available in our Docker Hub account.

 

We can inspect a container by following command.

docker inspect <container-id>

 

We can view Docker logs in a Docker container by following command.

docker logs <container-id>

 

And we can stop the running container by following command.

docker stop <container-id>

 

Pull and Run Docker Image from Docker Hub

To pull image from docker hub use the following command.

docker pull <imagename:tag>

 

Docker checks if the image already exists or not, if it is then it does not download further.In our case it is already there.So we need to remove existing image.

To remove the docker image use the following command.

docker rmi <imagename:tag>

 

Now pull the docker image from docker hub and check for the list of images.

 

To run the pulled image use the below command

docker run -d -p 4000:80 --name windowscontainer  hiral1/demoimage:1.0

- d flag is for running the container in detached mode.

- p flag flag for the port number, the format is local-port:container-port.

- --name for the container name, windowscontainer  in our case.

In a web browser, access http://localhost:4000 and we can see the index page which displays the content in the custom HTML page we added to the docker image.

Below is the example of how to pull and run docker image on Linux VM.

Here is the output of the docker image on the browser.

Rename/Tag Docker Image

To rename the docker image tag the image as follows.

docker tag <oldimagename:tag> <newimagename:tag>

In our case the old image name is hiral1/demoimage , old tag is 1.0 and new image name is newimage/latest.We have not provided a new tag to newimage, so it gives tag - latest by default.

 

Remove Docker Image

To remove the docker image use the following command.

docker rmi <imagename:tag>

TAGS Docker
Quickstart: What is Custom Vision?
Jul 22, 2024

Custom Vision Azure AI Custom Vision is an image recognition service that lets you build, deploy, and improve your own image identifier models. An image identifier applies labels to images, according to their visual characteristics. Each label represents a classification or object. Custom Vision allows you to specify your own labels and train custom models to detect them. How Custom Vision Works The Custom Vision service leverages a machine learning algorithm to analyze images for unique features. Here’s a step-by-step overview: Image Submission: Upload sets of images with and without the desired visual characteristics. Labeling: Tag the images with custom labels during submission. Training: The algorithm trains on this data and tests its accuracy using the same images. Deployment: Once trained, the model can be tested, retrained, and deployed in your app to classify images or detect objects. Offline Use: You can also export the model for offline applications.   Getting Started with Custom Vision Step 1: Create a New Project Visit the Custom Vision portal. Click on New Project. Fill in the required fields. Note: Charges apply as per the pricing model.   Step 2: Upload Training Images Navigate to the Training Images section. Click on the Browse button to select images. Add tags to the selected images. Ensure each tag is specific and accurate.   Browse the photos to start training and upload photos.   Add Tags to uploading images.   Uplaod Arround 50+ Photos for seamless training for each Tags. Step 4: Evaluate Model Performance Once training is complete, the model’s performance metrics will be displayed: Precision: Indicates the likelihood of a correct tag prediction. Recall: Shows the percentage of correct predictions out of all possible correct tags. Average Precision (AP): Summarizes precision and recall across different thresholds. To start training: Click on Train Button on the top,   So GO to Performance page, And Click on  Select the quick training for faster results and quick outputs.   Wait Until the Training teration is completed.   Wait until the models are Developed and  Once Training complets then it will show the Charts as per below.   Step 5: Test the Trained Model Click on Quick Test. Select an image to test. Review the precision percentages to understand tag accuracy   Supported Browsers The Custom Vision portal supports the following browsers: Microsoft Edge (latest version) Google Chrome (latest version) Conclusion Azure AI Custom Vision empowers you to create tailored image recognition models with ease. By following the steps outlined in this guide, you can harness the power of AI to enhance your applications.  

Your Go-To Solution for Generating Realistic Indian Data
Jul 17, 2024

In the world of software development and testing, having access to realistic and diverse data sets is crucial. That's why we are thrilled to introduce IndiGen, a powerful and versatile package designed to generate realistic Indian data with ease.   Why IndiGen? IndiGen is a comprehensive tool that caters specifically to the needs of developers and testers who require authentic Indian data for their projects. Whether you are working on unit tests, creating sample data, or validating functionality, IndiGen has got you covered. Key Features Realistic Indian Names: Generate complete names, first names, last names, middle names, prefixes, and suffixes. var fullName = India.Faker.Name.FullName(); // Example: Ramesh Babu var firstName = India.Faker.Name.First(); // Example: Amitabh var lastName = India.Faker.Name.Last(); // Example: Kapoor var middleName = India.Faker.Name.Middle(); // Example: Hrutvik var prefix = India.Faker.Name.Prefix(); // Example: Shri var suffix = India.Faker.Name.Suffix(); // Example: Bhai, Kumar   Valid Phone Numbers: Generate realistic Indian phone numbers. var phoneNumber = India.Faker.Phone.Number(); // Example: +91-9988776655, 9998887770, 079-27474747   Authentic Vehicle Number Plates: Generate vehicle number plates in Indian formats. var vehicleNumberPlate = India.Faker.VehicleNumberPlate.Number(); // Example: GJ 01 AA 7777, 24 BH 9999 AA   Valid PAN Card Numbers: Generate PAN card numbers that conform to Indian standards. var panCardNumber = India.Faker.PanCardNumber.Number(); // Example: AABBB8888A   Aadhaar Card Numbers: Generate Aadhaar card numbers. var aadhaarCardNumber = India.Faker.AadharCardNumber.Number(); // Example: 2222 4444 2222   Supported Versions IndiGen is compatible with a wide range of .NET versions, ensuring flexibility and ease of integration into your projects: .NET Framework 4.5, 4.6, 4.7, 4.8 .NET Standard 2.0, 2.1 .NET Core 3.0, 3.1 .NET 5.0, 6.0 Get Started with IndiGen Getting started with IndiGen is simple. Visit our NuGet package page and integrate it into your projects to start generating realistic Indian data today.   How to Install Installing IndiGen is straightforward. You can add it to your project using the NuGet Package Manager, .NET CLI, or by editing your project file. Using NuGet Package Manager Open your project in Visual Studio. Go to Tools > NuGet Package Manager > Manage NuGet Packages for Solution. Search for IndiGen. Select the package and click Install. Using .NET CLI Run the following command in your terminal:\ dotnet add package IndiGen Editing Your Project File Add the following line to your .csproj file: <PackageReference Include="IndiGen" Version="8.0.1" /> Replace "8.0.1" with the latest version of IndiGen.  NuGet Package: IndiGen   Contribute to IndiGen We welcome contributions from the community. If you have suggestions, improvements, or new features in mind, please open an issue or submit a pull request. Together, we can make IndiGen even better! IndiGen is here to simplify your development and testing process by providing realistic Indian data. Try it out and let us know your thoughts. Happy coding!

Quick Tips: Terraform Infrastructure as Code
Jul 13, 2020

You may have heard infrastructure as code(IaC), But do you know what infrastructure is? Why do we need infrastructure as code? What are the benefits of infrastructure as code? Is it safe and secure?    What is Infrastructure as Code(IoC)? Infrastructure as code (IaC) means to manage and upgrade your environments as infrastructure using configuration files. Terraform provides infrastructure as code for provisioning, compliance, and management across any public cloud, private data center, and third-party service. Enables teams to write, share, manage, and automate any infrastructure using version control With automated policy enforcement for security, compliance, and operational best practices and Enable developers to provision their desired infrastructure from within their workflows. IOC has a high impact on the Business perspective by providing Increased Productivity, Reduced Risk, Reduced Cost   Why do we use Infrastructure as Code(IoC)? Terraform is a simple human-readable configuration language, to define the desired topology of infrastructure resources VCS Integration Write, version, review, and collaborate on Terraform code using your preferred version control system Workspaces Workspaces decompose monolithic infrastructure into smaller components, or "micro-infrastructures". These workspaces can be aligned to teams for role-based access control. Variables Granular variables allow easy reuse of code and enable dynamic changes to scale resources and deploy new versions. Runs Terraform uses two-phased provisioning a plan (dry run) & apply (execution). Plans can be inspected before execution to ensure expected behavior and safety. Infrastructure State The state file is a record of currently provisioned resources. State files enable a versioned history of the infrastructure and are encrypted at rest. Versions can be inspected to see incremental changes. Policy as Code Sentinel is a policy as a code framework to automate multi-cloud governance.   What are the benefits of Infrastructure as Code(IoC)? Infrastructure as Code enables Infrastructure teams to test the applications in staging environments or development environment early - likely in the development cycle Infrastructure as Code Saves You Time and Money We can have a version history like when the infrastructure is upgraded and who has done it from the code itself. Else we have to ask to check the Infrastructure admin to look into logs and which is very time-consuming. We can check it into version control and I get versioning. Now we can see an incremental history of who changed what Use Infrastructure as Code to build update and manage any cloud, infrastructure, or services Terraform makes it easy to re-use configurations for the environment for similar infrastructure, helping you avoid mistakes and save time. We can use the same configuration code for the different staging Production and development environments. Terraform supports many Providers to be built from just a simple and less line of code. Major providers are as follows AWS Azure GitHub GitLab Google Cloud Platform VMWare Docker  and  200+ more. A Simple example to create an Ec2 Instance with just a few lines of code. resource "aws_instance" "ec2_instance" {   ami = "ami-*******"   instance_type = "t2.micro"   vpc_security_group_ids = ["${aws_security_group.*****.id}"]   key_name = "${aws_key_pair.****.id}"   tags {     Name = "New-EC2-Instance"   } } But First, we have to write code for which provider we are writing our code. To do so  here is the simple basic code to assign a provider provider "aws" {   region = "us-west-2"   ## PROVIDE CREDENTIALS } Now to Create your Ec2 Instance in AWS. We have to run the commands. So terraform has Four commands to check and apply the infrastructure changes, Init Plan Apply Destroy.   1. Init $ terraform init We can understand from the name of the command that is used to initialize something. So here terraform will be initialized in our code which will create some basic backend and tfstate files in folders for internal use. 2. Plan $ terraform plan As we do compile in some code languages, it will check for the compilation errors and plan what is going to happen when we run the script to generate infrastructure code. It will show you what resources are going to be created and what will be the configuration. 3. Apply $ terraform apply It is time to run the script and check what is being generated from the scripts. So the command will execute the script and apply the changes in our infrastructure, which will generate some resources for what we have written in the code.  4. Destroy $ terraform destroy This command is used when we want to remove or destroy the resource. After some time we don't need that resource then we just run the command which will destroy the resource. And your money is saved.

Kishan Parmar

About the Author

Kishan Parmar

Team Leader at MagnusMinds IT Solution
Team Leader with a demonstrated history of working in the computer software industry. Skilled in Asp.net MVC 4.0, C#, WPF Development, Terraform, Infrastructure as a code, AWS, Azure, IONIC, Node JS, Asp. Net Core, Web API MVC, .NET Core Web API, Application Programming Interfaces, and Raspberry Pi.
Strong engineering professional with a Bachelor of Engineering (B.E.) focused on Computer Engineering.