What is Docker?
Docker is an open platform that is used for developing, shipping, and running applications. Docker has the ability to package and run an application in a loosely isolated environment called a container. The container is an isolated and lightweight environment for hosting our applications.
Docker is a tool that is used to containerize our application. It takes care of creating and managing containers.
Benefits of Containerization
Isolation
When we are deploying multiple applications on the same server, there might be cases that one or more apps have a dependency on the same third-party library but each app may require a different version of the same library. In this case, some apps may stop working due to dependency on a particular version.
If we use docker then this problem is resolved. Docker creates containers and each container will have a particular app and its associated third-party libraries. Each app will run in its own container and they will be isolated from each other.
Portability
It is very easy to port our applications between multiple environments. An image is created from the project source code which includes a list of all dependencies and we can create a container from that image in any environment and run the container.
Consistency
If your application runs inside a container on the local system without any issue then it will run everywhere inside the container.
Image - Image is a read-only template that has instructions that are required to create a container. Image is an executable package that includes everything needed to run an application – including the code, runtime, and libraries. We can create multiple containers running concurrently from the same image.
Container - A container is a runtime instance of an image. The container is a process that is created from the image using Docker.
Docker Registries - All images are stored in registries. The registry can be public or private just like Github. Docker Hub is the most popular registry.
What is the difference between Docker and Container?
Docker is a platform for managing containers while a container is a process that executes our applications.
Docker Engine
There are two parts of Docker Engine,
- Client
- Server
The client interacts with the server using REST API. The server is also known as Docker Daemon. We use Docker CLI to interact with the server. Here Docker CLI is the client.
How to install Docker
Please make sure Hyper-v should be enabled in your system. Windows 10 Professional or Enterprise version is suitable for Docker Desktop.
Go to control panel >> Programs >> Programs and features and click on ‘Turn Windows features on or off.
Make sure that Hyper-V is installed. Select Hyper-V if it is not selected and install it.
Below is the URL of Docker Desktop for windows. Download it and install.
https://docs.docker.com/desktop/windows/install/
If you get an exception while starting Docker Desktop after installation then visits the below URL,
https://docs.microsoft.com/en-us/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package
Follow the instructions to complete the setup listed in the above URL.
Open Windows PowerShell and type the below command to check the docker version
docker --version
Use the below command to see all images
docker images
Currently, we don’t have any images on the local system so no image is displayed.
To check the containers, use the below command,
docker ps –a
Download an image from the registry
https://hub.docker.com/_/microsoft-dotnet-samples
Open Powershell and run the below command to download the image,
docker pull mcr.microsoft.com/dotnet/samples:dotnetapp
Now run the command to see images,
docker images
Below is the output, currently we have only 1 image.
Now download another image,
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
Now view images again,
docker images
Now you can see there are 2 images.
Create a container from the image and run,
docker run -p 8000:80 --name aspnetcore_sample mcr.microsoft.com/dotnet/samples:aspnetapp
Here we have mapped port 80 of the container to our local system port 8000
Now go to Docker Dashboard by right click on the Docker icon in the taskbar and select Dashboard as displayed below screenshot.
You will see the container listed on the dashboard
Click on the highlighted option (as displayed in the above image) to view it in the browser.
In this article, we have learned the fundamentals of Docker. In the next part, we will see image creation from the ASP.Net Core project and we will create a container from that image.
Thanks for reading.