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, закинуть образы и удалить при возникшей потребности.