Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.
Установку Docker мы будем производить на базе серверной операционной системы Ubuntu 20.04
Для установки вам понадобится выделенный либо виртуальный сервер с установленной Ubuntu 20.04
Установка
Перед началом установки обновим базу пакеты
sudo apt updateСледующим шагом будем установка необходимых пакетов для корректной работы docker
sudo apt install apt-transport-https ca-certificates curl software-properties-commonДобавляем ключ GPG официального репозитория Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -Подключаем репозиторий Docker
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"После добавления нового репозитория обязательно обновим базу пакетов, иначе при выполнении команды установки система не будет знать что этот пакет доступен
sudo apt updateПриступим к установке Docker
sudo apt install docker-ceПосле установки Docker проверим, запущен ли демон
sudo systemctl status dockerПосле выполнения команды вы должны получить примерно следующее
    docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
     Active: active (running) since Fri 2020-07-10 09:11:13 UTC; 31s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 55695 (dockerd)
      Tasks: 9
     Memory: 37.1M
     CGroup: /system.slice/docker.service
             └─55695 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/con>На этом установка Docker завершена.
Запуск первого Docker контейнера
Образы контейнеров Docker загружаются с Docker Hub
Загрузим тестовый контейнер hello-world
docker run hello-worldПосле выполнения команды начнется загрузка образа и его установка
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
    The Docker client contacted the Docker daemon.
    The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
    The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
    The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bashДля поиска образов в Docker Hub используется команда search и ключевое слово поиска. К примеру вывод всех контйенеров в которых упоминается web
docker search webВы получите следующий список
NAME                           DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
php                            While designed for web development, the PHP …   5354                [OK]              
django                         Django is a free web application framework, …   976                 [OK]              
redmine                        Redmine is a flexible project management web…   896                 [OK]              
drupal                         Drupal is an open source content management …   779                 [OK]              
mongo-express                  Web-based MongoDB admin interface, written w…   725                 [OK]              
jetty                          Jetty provides a Web server and javax.servle…   338                 [OK]              Для того чтобы загрузить нужный контейнер достаточно выполнить pull и указать имя контейнера
docker pull php После загрузки контейнера его нужно будет запустить командой run
docker run php Еще одна команда которая может вам пригодится — просмотр загруженных образов.
docker imagesОна выводит все образы которые были загружены на сервер
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 latest              da48a8a02f6e        11 hours ago        405MB
hello-world         latest              bf756fb1ae65        6 months ago        13.3kBВ качестве простого примера работы с контейнерами, я покажу вам как запустить ubuntu в контейнере под ubuntu, подключиться к контейнеру и установить программу в контейнере.
Устанавливаем контайнер с ubuntu
docker pull ubuntuЗапускаем контенер с ubuntu и подключаемся к нему в командную строку
docker run -it ubuntuПосле подключения в контейнер вы увидите приглашение следующего вида
root@997d1ad717ec:/#Теперь мы находимся в контейнере и можем устанавливать все что нам может потребоваться. Давайте установим консольный файловый менеджер mc, но перед установкой обязательно обновим список пакетов
apt-get update
apt-get install mcДля того чтобы выйти из контейнера достаточно выполнить команду exit
exitУправление контейнерами
Просмотр списка активных контейнеров
docker psВывод будет следующий
CONTAINER ID        IMAGE               COMMAND             CREATED     Просмотр контейнеров системы
docker ps -aДанная команда выведет примерно следующий текст
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS               NAMES
997d1ad717ec        ubuntu              "/bin/bash"              About an hour ago   Exited (1) About a minute ago                       interesting_lamarr
3f2b8dd64649        php                 "docker-php-entrypoi…"   About an hour ago   Exited (0) About an hour ago                        zealous_ritchie
2ac5f9e2f820        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                              hopeful_kilbyСписок последних созданных контейнеров
docker ps -lЗапуск контейнера производится командой start + ID контейнера либо имя контейнера . Для примера запустим контейнер с ubuntu его ID 997d1ad717ec , а имя interesting_lamarr
docker start 997d1ad717ecТеперь командой docker ps проверим статус контейнера
docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
997d1ad717ec        ubuntu              "/bin/bash"         About an hour ago   Up 39 seconds                           interesting_lamarrДля остановки контейнера выполним команду docker stop + ID либо имя контейнера
docker stop interesting_lamarrДля удаления контейнера используется команда docker rm + ID либо имя контейнера
docker rm interesting_lamarr
Теперь вы умеет устанавливать Docker , скачивать, создавать, удалять и изменять контейнеры. И самое главное, в этом нет ничего сложного.