Docker- Container installation and network setup

Introduction

Docker is a tool that performs operating system level virtualization that is known as container technologies, containers allow a developer to package up an application with all the parts it need, such as libraries and other dependencies, and ship it all out as one package.

Two are two type of edition for Docker, one is Community Edition (CE) and Enterprise Edition (EE). Community Edition can be used for development and testing purpose without any professional support where Enterprise Edition comes with yearly based license and 24×7 support.

Architecture

Docker uses a client-server architecture. Docker client talks to docker demon and docker demon does all task building, running and distributing containers. The client and demon communicate using API, over UNIX socket or network interface.Docker Client interacts with demon by sending the commands.

Installation

In this post we are going to install Docker, installation of containers, create and pull images.

OperatingSystem: Centos7

Installing Docker package            #yum install docker-ce

Starting service                   #systemctl start docker

Enabling auto start on boot         #systemctl enable docker

Once the Docker CE is installed on your system, let’s start search and pull images to the docker host and run your first container.

1: “Docker search” is the command to search the images on docker hub, eg:

#docker search ubuntu

2: Download the respected image using below command before we run our new container.

#docker pull docker.io/mcpayment/ubuntu1404

3: Let’s verify the image has been downloaded on local system using the below  command:

#docker images

4: The downloaded images name is too big and difficult to remember, let’s give a name to image so that it’s easy to remember even after days:

#docker tag old_image_name:latest new_image_name:latest

#docker tag docker.io/mcpayment/ubuntu1404 ubuntu14:latest

 

5: So now we have ubuntu14 images downloaded on local system and we have tag the name as per our continence.

Let’s start your fist container:

#docker run --name first_container ubuntu14

The container has been installed but it’s in stopped status:

Let’s use -it to integrate with the shell:

–name : name of your container.

–hostname : Assign a hostname to the container

ubuntu14 : images we used to launch the container

6: List out all containers presently available on docker hosts:

Have look on the last column (STATUS)of below screenshot:

#docker ps -a

#docker ps - only for running container

 

Stop a running container:

#docker stop container_id or docker stop container name

7: DOCKER NETWORK:

We will setup a network with specific CIDR to run containers

Few basic networking command-

List out the available networks:

#docker network ls

How to see information related to a network:

#docker network inspect bridge

Create your first network:-

#docker network create --driver bridge network_name

Create network with a specific CIDR range-

#docker network create --driver bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1

Let’s verify the new network has taken the specified network range?

#docker network inspect first_network

Now Let’s install container again on the new network 192.168.0.0/16:

#docker run --name test2 --net=first_network --ip=192.168.232.1 -it ubuntu14 bash

8- Exposing Port

Exposing port to the container and docker host:-

#docker run  --name test3 --net=first_network -p 21:21 -it ubuntu14 bash

#docker inspect test3 |grep Port

 

Multiple ports:-

#docker run --name test5 --net=first_network -d -p 110:110 -p 20:20 -it ubuntu14 bash

Have look on the “PORTS” column

9: Directory Mapping:-

Maping the local (docker host)directory path to the container:-

#docker run --name tes3 --net=first_network -v /var//test/:/var/test/ -it ubuntu14 bash

10: Run the container in detach mode

#docker run --name test4 --net=first_network -d -it ubuntu14 bash

–name:  to specify container name

–hostame: Assign a hostname to the container.

–p: expose the port to the container and docker host, port number before “:” is for docker host and after “:” is for inside container.

-v – to map the localhost path inside the container.

-d – run the container in detach mode

11: Executing the commands inside the container:

#docker exec  -it test4 touch ls

#docker exec  -it test4 ls -lrt

 

12: COPY

Copy file from local host to the container:

#docker cp new test4:/tmp

13: Logs:-

Below is the container Logs directory:-

#/var/lib/docker/containers/

Using the below command, get the Id of your container and check the logs:

#docker inspect test4 |grep Id

You will see a .json file inside the container id:

#ls -lrtd 5854ea202f367a4a278e8734a1c32e50c52047e963950b2681a8960807779a59-json.log

Thank you for reading the article!

Hope you liked it, we wish you best of luck. Stay tuned and keep learning!

Leave A Comment

Your email address will not be published. Required fields are marked *