Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Unknown User (tzok) 

Markdown
## Introduction

-   Docker is a tool which allows to start containers i.e. lightweight,
    isolated environments (OS, libraries, configurations)

    -   You can install Docker for Mac, Windows or Linux:
        [documentation](https://docs.docker.com/get-docker/)

-   To work with a container you need an image to start from

-   Images can be found in public or private repositories:

    -   Base operating systems
        e.g. [Ubuntu](https://hub.docker.com/_/ubuntu) or
        [CentOS](https://hub.docker.com/_/centos)
    -   Ready-to-start interpreters
        e.g. [Python](https://hub.docker.com/_/python) or
        [PHP](https://hub.docker.com/_/php)
    -   Database management systems
        e.g. [MySQL](https://hub.docker.com/_/mysql) or
        [PostgreSQL](https://hub.docker.com/_/postgres)

-   A container executes one or more processes in its isolated
    environment

-   The process might be a daemon e.g. Apache HTTP Server or it can be
    an interactive terminal

-   Dockerization features:

    -   Quick prototyping and testing

        -   For example, you can easily spawn multiple versions of
            PostgreSQL and test your SQL queries against them

    -   Better dissemination

        -   The product owner can share a Docker image and anyone
            interested can use it straight away

    -   Enhanced security

        -   A container is isolated and runs a limited number of
            processes
        -   Even if it gets hacked, the rest of the system remains
            unharmed

    -   Easier maintenance

        -   The images are usually built in an automatic way via CI/CD
            pipelines or regularly scheduled jobs
        -   No matter how complex the environment is, once the image
            recipe is created all interested users can instantiate
            containers at will