noscriptfb
img
img
  • CyberSecurity
  • Experts
  • Blogs
  • ToolBox
  • Contact Us
  • What’s and how’s of Docker

    img
    What’s and how’s of Docker

    What’s and how’s of Docker

    What is docker?

    Docker is a tool to run applications in an isolated environment and it’s an open-source project.

    Docker is static binary, which you can download on to your server, run it as daemon, once the daemon is running, you can run the client, type commands and it will pass commands to daemon and you are in business. In Docker application, a container always runs in the same environment irrespective of the operating system.

    I know there are many container based solutions, including Virtual machines, however the main difference between Virtual Machines and Docker containers is that Virtual Machines consists of a Guest OS i.e. it has to have its own kernel whereas Docker container uses host OS i.e. Host kernel to run its application, resulting in very less consumption of resources. So, users can run multiple containers at once in Docker without putting heavy load on host machine. Usual containers are basically miniature servers, whereas, Docker is used as a unit of software delivery, so we can say that it is an envelope for running an application.

        What’s and how’s of Docker | Pristine InfoSolutions

                                                                                 “Virtual Machine vs. Docker”

                                                                     

    How to Install Docker?

    Windows

    1. Download Docker

    2. Double-click InstallDocker.msi to run the installer.

    3. Follow the Install Wizard: accept the license, authorize the installer and proceed with the installation.

    4. Click Finish to launch Docker.

    5. Docker starts automatically.

    6. Docker loads a “Welcome” window giving you tips and access to the Docker documentation. That’s it !!

    Kali Linux

    Preparation

    1. Add Docker pgp key:
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –

    2. Configure Docker apt repository:
    echo 'deb https://download.docker.com/linux/debian stretch stable' > /etc/apt/sources.list.d/docker.list

    3. Update
    apt-get update

    4. Cleaning old Docker
    As we want a clean installation, what we do is verify that there are no obsolete versions and we give it :
    apt-get remove docker docker-engine docker.io

    What’s and how’s of Docker | Pristine InfoSolutions

    Install Docker:

    apt-get install docker-ce

    What’s and how’s of Docker | Pristine InfoSolutions

    What’s and how’s of Docker | Pristine InfoSolutions

    Verify if it was installed correctly

    docker run hello-world

    What’s and how’s of Docker | Pristine InfoSolutions

    Watch the version

    docker version

              What’s and how’s of Docker | Pristine InfoSolutions

     

    As discussed earlier, the process of building a Docker image is using a Dockerfile as per our requirements and getting instance of a Docker container. And, if needed, publishing the Docker image now or after committing the modified container as a Docker image as shown in the diagram below.

    What’s and how’s of Docker | Pristine InfoSolutions

    Now to understand Docker and its additional uses, let’s create a very simple hello world application in PHP and publish it.

    1.Let’s create a file index.php in a directory of my choice /root/docker/src/index.php with following content.
    <?php echo "Hello, World"; ?>

     

    Commands for the same in linux are :
    - mkdir docker; cd docker; mkdir src; cd src   #creating directory named docker and src and moving into those directories.
    - pwd #checking the path
    - echo "<?php echo \"Hello, World\"; ?>" >index.php  #creating index.php file with content
    - ls -la   #listing files
    - cat index.php  #reading index.php file

    What’s and how’s of Docker | Pristine InfoSolutions

    2. Now let’s start the process of creating a Docker image by creating Dockerfile in the docker directory.

    3. First we need a ready php Docker image. So visit URL https://hub.docker.com/ and search for php

    What’s and how’s of Docker | Pristine InfoSolutions

    4. As we can see in official php image there are different Supported tags.

    What’s and how’s of Docker | Pristine InfoSolutions

    5. We will choose 7.3.5-apache, a fixed version so that in future it should not break due to updates.

    6. As scrolling down we can see How to use this image section.

     

    What’s and how’s of Docker | Pristine InfoSolutions

    Now let’s add content to our Dockerfile as per our requirements.

    7. Using any editor, create a file named Dockerfile in docker directory and add following content to it and save.
    FROM php:7.3.5-apache
    COPY src/index.php /var/www/html/
    EXPOSE 80

    What’s and how’s of Docker | Pristine InfoSolutions

    8. When you put EXPOSE 80 (or any port you want) in your Dockerfile that’s going to tell Docker that your container’s service can be connected to on port 80. It doesn’t set up any networking properties. You can think of it more like a runtime configuration option that’s explicitly stated in your Dockerfile.

    9. First let’s check how many images are there by doing
    docker images

    What’s and how’s of Docker | Pristine InfoSolutions

    10. Now let’s build the Docker image by running command
    docker build -t dybtron/hello-world:demo .

    What’s and how’s of Docker | Pristine InfoSolutions

                                       In this command 
                                       docker build [OPTIONS] PATH
                                       docker - The base command for the Docker CLI.
                                       build  - will build an image from a Dockerfile
                                       -t ; --tag  - Name and optionally a tag in the ‘name:tag’ format
                                       dot [.] – is the path for current directory

     

    11. Above command will build the Docker image named dybtron/hello-world and is tagged as demo using the Dockerfile in the docker directory.

    12. It might take few minutes depending on the internet speed. Once the process is done, we should get two images; php and dybtron/hello-world:demo . To check let’s run again the command
    docker images

    What’s and how’s of Docker | Pristine InfoSolutions

    13. So now let’s run the Docker image
    docker run -p 80:80 –t dybtron/hello-world:demo

    In this command 
    docker run [OPTIONS] IMAGE [COMMAND]
    docker - The base command for the Docker CLI.
    --tty , -t	- Allocate a pseudo-TTY
    --publish , -p -  Publish a container’s port(s) to the host   
        
    

     

    14. As we can see the Docker image is running and container is ready to be used. In above command we are running dybtron/hello-world:demo image by publishing the docker port 80 to localhost port 80.

    15. So now let’s verify if it’s working by visiting localhost in the browser.

    What’s and how’s of Docker | Pristine InfoSolutions

    As we can see, it’s working.

    16. Now let’s publish the image publically. For this, we need to first login to http://docker.io using Docker.
    docker login docker.io
    When it will prompt for username and password, submit the value.

    What’s and how’s of Docker | Pristine InfoSolutions

    Now we are ready to publish.

    17. Let’s publish by running the command
    docker push dybtron/hello-world:demo

    18. Now let’s check if it’s published by logging in to http://hub.docker.io/ . And we can see it’s published.

    What’s and how’s of Docker | Pristine InfoSolutions

    I hope it was fun. Next part “Advanced stuffs of Docker” is coming soon.