Docker Basic Tutorial

Basic Docker tutorial | Docker Cheet Sheet | Docker Guide | Learn Docker




Docker Introduction

Docker tool was introduced in order to make it easier for you to create, deploy, and run applications by using containers. Containers provision you the packaging of your application with all the important components it requires, like libraries and other dependencies, and ship them all out as one package. Due to which you as a developer can be assured that your application will run on any other machine.

Docker Architecture

We will start from understanding Docker’s Architecture and main aspects in it, then we will continue with the important commands required for docker installation, build, push, run, ship etc. operations.
DevOps architecture consists of these 5 main entities which are Registry, Images, Containers, Docker Daemon and Client.


  • Registry: It hosts the public and official images, docker registry that we use is Dockerhub.
  • Images: It can be downloaded from the registry directly or implicitly when starting a container.
  • Containers: They are basically instances of the images, multiple containers for a single image is possible.
  • Docker daemon: Daemon creates, runs and monitors the containers along with building and storing the images.
  • Client: Client talks to daemon via http.

Docker Orchestrate

Orchestration is used for managing the container’s lifecycle especially in dynamic environments.
It is used for controlling and automating many tasks for the container. There are many Docker Orchestration tools like Docker Swarm, Kubernetes etc, and we’re using Docker Swarm commands below, let’s check the commands used for Docker Orchestration.

Commands:

    To initialize swarm mode and listen to a specific interface.

       #  Docker swarm init --advertise-addr 10.1.0.2

    Join an existing swarm as manager node

        Docker swarm join --token<manager-token> 10.1.0.2:2377

    Join a swarm as a worker node

        Docker swarm join --token<worker-token> 10.1.0.2:2377

    List all the nodes in the swarm

        Docker node ls

    Create a service from an image on the existing port and deploy 3 instances

        Docker service create --replicas 3 -p 80:80 name -webngix

    List services running in swarm

       #  docker service ls

    Scale a service

        # docker service scale web=5

    List tasks of a service

        # docker service ps web


Docker Build

Build command is used for building images from a docker file. Let’s check some of essential docker build commands.
Commands:

    To build the image from the docker file and tag image

        Docker build -t myapp :1.0

    List all images that are locally stored

        Docker images

    Delete an image from the docker store

        Docker rmi alpine: 3.4

Docker Run

Run command is used for creating a container from a specified image. Check these run commands for your reference.
Commands:

    To create and run a command:
        Docker run –name container_name docker_image
    Flags used:
        -d detach container on start
        -rm remove container once it stops
        -p publish host ip and host port to the container por
        -v define and share volume across containers
        –read-only sets it to read only permission
      
Docker Ship

Docker gives you the capability of shipping your application container anywhere, on any platform, let’s check some commands for it.
Commands:

    To pull an image from the registry
        Docker pull alpine:3.4.
    Retag a local image with a new image name
        Docker tag alpine:3.4 myrepo/ myalpine:3.4
    Log in to a registry
        Docker login my.registry.com:8000
    Push an image to a registry
        Docker push myrepo/ myalpine:3.4


Docker Clean up

To prevent from wasting the resources, you must know how to clean, we are providing few essential commands for same.
Commands:

    To clean unused/dangling images:
        Docker image prune
    To remove images not used in containers
        Docker image prune -a
    To prune the entire system
        Docker system prune
    To leave a swarm
        Docker swarm leave
    To remove a swarm
        Docker stack rm stack_name
    To kill all running containers
        Docker kill $ (docker ps -q)
    To delete all stopped containers
        docker rm $(docker ps -a -q)
    To delete all images
        docker rmi $(docker images -q)

Docker  Services

Let’s take a sneak peek over the commands used for viewing the running services, run the services, to view all service logs and to scale the services.
Commands:

    List of all services running in a swarm
        Docker service ls
    To see all running services
        Docker stack services stack_name
    To see all service logs
        Docker service logs stack_name service_names
    To scale service across qualified nodes
        Docker service scale stack_name_service_name= replicas
       
       
Interaction with a container

Let’s check how to make an interaction with a container

    Run a command in the container
        Docker exe -ti container_name command.sh
    Follow the container logs
        Docker logs -ft container name
    Save a running container as an image
        Docker commit -m “commit message” -a “author” container_name username/image_name: tag

Docker Important terms

Some of the important terms while using docker container.


  •     Docker Layer: Read-only files to provision the system
  •     Docker Image: Read only layer that is the base of the image
  •     Docker Container: A runnable instance of the image
  •     Docker Registry/hub: Central place where images live
  •     Docker machine: A VM to run docker containers
  •     Docker compose: A VM to run multiple containers as a system.