Docker – популярное приложение для контейнеризации программ. Контейнер помогает запустить различные образы и программы в состояниях, когда происходит ограничение по использованию ресурсов. Он работает с файловой системой, используя Copy-On-Write для внутреннего хранилища. Такие контейнеры могут работать практически везде вне зависимости от условий. Рассмотрим, как установить docker на ubuntu и какие нужно знать основные концепции, команды и прочие нюансы.

Требуемые условия

Для успешной настройки по предлагаемой инструкции понадобятся следующие условия:

  • Собственно сам сервер Ubuntu 18.04, который предварительно настраивается по определенному руководству, а также утилита sudo не с правами администратора и программа, осуществляющая контроль и фильтрацию сетевых пакетов по требованиям пользователя (файрвол).
  • Наличие учетной записи на Docker Hub. Это важно, если пользователь желает сам создавать и распространять образы, о чем будет рассказано ниже.

Если эти условия соблюдены, то далее достаточно следовать четкой пошаговой инструкции.

Этап первый: постановка Docker

Вариант Docker, который предложен непосредственно в зарегистрированном официальном хранилище Ubuntu: не факт, что это и есть крайняя версия данного приложения. Оптимальный вариант – приобрести обновленный последний вариант из официального хранилища Docker.

Алгоритм прост:

  • Добавить свежий ресурс дистрибутива.
  • Ввести ключ GPG непосредственно из хранилища Докер (с его помощью можно узнать действительна ли данная версия).
  • Установить дистрибутив.

Последующие действия пользователя:

Ввести индекс пакетов и обновить систему с применением командного кода: 

$ sudo apt update

Переходя на другой этап требуется установить зависимости, нужные для включения хранилища посредством HTTPS:

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

Для импортирования ключа GRG хранилища требуется использовать следующую команду:

$ 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 $(lsb_release -cs) stable"

Теперь хранилище Docker подключен, нужно обновить список apt пакетов:

$ sudo apt update

и установить последнюю версию Docker CE, для чего необходима команда:

$ apt-cache policy docker-ce

Непосредственно служба Docker запустится автоматически, сразу после установки. Чтобы это проконтролировать, пользователю достаточно набрать

$ sudo systemctl status docker

В результате на экране появится вывод, который будет смотреться так:

Output
docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago
     Docs: https://docs.docker.com
 Main PID: 10096 (dockerd)
    Tasks: 16
   CGroup: /system.slice/docker.service
           ├─10096 /usr/bin/dockerd -H fd://
           └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml

Теперь у пользователя работает сервис Docker и имеется доступ к плагину команды Докер. Одна из вариаций – docker compose, который позволяет работать нескольким контейнерам как одному сервису.

Выборочная настройка Docker

Другой этап – это применение Докер выборочно без указания плагина судо. Перваначально пуск команды затребует права пользователя типа рут или членство в группе Docker. Последняя сразу активизируется при пуске команды «Докер». Если попытаться начать работу соответствующей команды без прав пользователя рут или членства Docker, система выдаст такую кодировку:

Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?
See 'docker run --help'

Чтобы судо не вбивать всякий раз при необходимости запустить команду, достаточно добавить имя пользователя для членства в группе Докер:

$ sudo usermod -aG docker ${USER}

Чтобы внесенные изменения остались в составе группы и сохранились там, требуется убрать и снова вбить логин на сервере с последующим введением командной информации:

$ su - ${USER}

Чтобы продолжить нужные для работы действия следует написать пароль пользователя.

Для проверки факта, что пользовтаель попал в группу Docker необходима команда:

$ id –nG

с последующим ответом:

Output
sammy sudo docker

Для того, чтобы ввести в членство группы любого участника, достаточно вбить имя требуемого пользователя, примерно так:

$ sudo usermod -aG docker username

Теперь в нашей инструкции будет по умолчанию считаться, будто пользователь по факту имеет членство в группе Докер. Все последующие правила действуют для них.

Этап 3: Применение команды Docker

При применении команды используются различные опции с нужными аргументами. Общий синтаксис команды выглядит следующим образом:

$ docker [option] [com.mand] [arguments]

Чтобы пользователь мог узнать все команды, которые находятся в доступе, ему достаточно ввести

$ docker

Чтобы получить помощь по конкретной подкоманде, можно воспользоваться хэлп переключателем, который как команда выглядит так:

$ docker docker-subcommand –help

Некоторые команды не помешает узнать подробнее, в частности, как правильно работать с образами.

Четвертый шаг: Работа с образами Docker

Контейнеры Docker могут запускаться с соответствующего образа, который первоначально берется из Docker Hub. По сути, это специальный учетный список образов, которые одобряются компанией. Аналогичные собственные образы может любой сделать и закинуть в Докер Hub, поэтому требуемые для работы дистрибутивы Linuх уже чаще всего имеются в Докер Hub.

Пользователь может проверить, есть ли у него возможность самостоятельно создавать и загружать в соответствующее приложение образы. Для этого необходимо ввести команду:

$ docker run hello-world

Если Docker работает правильно и полностью корректно, то пользователь на экране должен увидеть примерно такой результат:

Output
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Docker Hub – это облачная службы и в ее функции выходит хранение образов, как в общедоступном, так и в частном хранилище по определенному ip-адресу.

В самом начале существования Docer система закидывала все нужные образы из Докер Hub, который сам по себе был хранилищем. Загружать и искать образы с использованием hello-world не было возможности. В итоге после того, как образ был загружен Docker создавался из образа контейнера и происходил пуск программы с отображением соответствующего информационного сообщения.

Чтобы отыскать доступные в Докер Hub образцы, требуется пользоваться командой Docker и дополнительным кодом search. Выглядит в командной строке, например, для поиска убунту, это следующим образом:

$ docker search ubuntu

Скрипт в итоге просматривает систему и отбирает все образы, имена у которых подходят под поисковый запрос. В результате поиска пользователь получает таблицу с пятью столбцами по наименованиям: NAME, DESCRIPTION, STARS, OFFICIALи AUTOMATED.

Практически все образы помечены номерами действующих версий. Если теги не указаны, то Докер извлечет последнее изображение.

Строка в таблице с надписью OFFICIAL напротив найденного образа должна иметь надпись ОК, которая означает, что данный образ настроен и поддерживается компанией, занимающейся разработкой данного проекта.

Загрузить необходимый образ можно с использованием специальной подкоманды pull. Например, в нашем случае, для загрузки с официального сайта образ Ubuntu, следует ввести код:

$ docker pull ubuntu

Правильный ожидаемый итоге выглядит такой кодировкой:

Output
Using default tag: latest
latest: Pulling from library/ubuntu
6b98dfc16071: Pull complete
4001a1209541: Pull complete
6319fc68c576: Pull complete
b24603670dc3: Pull complete
97f170c87c6f: Pull complete
Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d
Status: Downloaded newer image for ubuntu:latest

На следующем этапе с использованием подкоманды run можно запустить контейнер с уже загруженным образом. Если при выполнении команды образ на данный момент еще не загружен, то на первом этапе клиент сначала грузит образ, а уже потом запускает контейнер с образом.

Чтобы отсмотреть все загруженные на компьютер образы следует ввести код команды

$ docker images

Примерный ответ системы будет виден как набор примерно таких кодов:

Output
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 113a43faa138 4 weeks ago 81.2MB
hello-world latest e38bc07ac18e 2 months ago 1.85kB

Теперь стоит рассмотреть процесс как именно правильно запускать контейнеры.

Шаг 5: Запуск контейнера docker

До этого в алгоритме действий пользователь дал старт hello-world. Это тип контейнера, который начинает работать и прекращает функционировать после проверочной команды. Существуют варианты и с более важными функциями. По сути это виртуальные машины с минимальными требованиями.

Чтобы дать пользователям пример, попробуем дать старт контейнеру, применяя последний рабочий вариант образа Ubuntu. Для онлайнового контакта с командным процессором используются указатели –i и –t. Код командный будет вырисовываться так:

$ docker run -it ubuntu

Чтобы человек, использующий программу, увидел, что теперь работа происходит в контейнере, окно с командным кодом видоизменяется и выдает:

Output
root@d9b100f2f636:/#

В командной строке используется идентификатор контейнера, который может понадобиться, чтобы указать системе в последующем, какой контейнер удалять.

Теперь, открыв контейнер, пользователь может проводить здесь любые команды, например, обновить данные пакета. При этом перед командой теперь нет необходимости использовать утилиту sudo. Внутри контейнера пользователь отмечен как клиент с привилегиями рут администратора.

Чтобы установить в контейнер очередное приложение из официального хранилища Ubuntu, достаточно ввести определенную команду. Например, чтобы загрузить приложение Node.js в контейнер, требуется ввести код:

root@d9b100f2f636:/# apt install nodejs

Все, теперь данная программа также присутствует в контейнере.

Для выхода из контейнера достаточно ввести простую команду exit.

Список Докер Контейнеров

При желании, пользователь может свободно посмотреть все доступные активные контейнеры. Код для выведения такого списка выглядит так:

$ docker container ls

При этом, если на данный момент нет запущенных контейнеров, то результатом будет пустое окно.

Чтобы глянуть список полный, включая неактивных контейнеры, следует в команду добавить –а переключатель:

$ docker container ls –a

Загружаем образы в хранилище Docker

Если пользователь закинул образ, то по желанию он может поделиться с Докер Hub или с другим учетным списком, но в любом случае потребуется зарегистрированный аккаунт. После регистрации на Докер Hub необходимо зайти в свою учетную запись, используя команду

docker login -u docker-registry-username

Потом вбиваем используемый пароль, а как только зайдем в аккаунт Докер Hub, можно начинать грузить новый образ:

$ docker push docker-registry-username/docker-image-name

Процесс выполняется определенное время, если все прошло корректно, то образ можно будет затем увидеть в каталоге.

Удаление Докер Контейнеров

Если понадобилось удалить контейнер, или даже несколько, достаточно скопировать их идентификаторы. Их достаточно скопировать и вставить в конце кода команды

$ docker container rm

Теперь даже начинающий пользователь знает, как установить docker на ubuntu, как провести первоначальную настройку, настроить vps, закинуть образы и удалить при возникшей потребности.