Docker - это система управления контейнерами для Linux. Если говорить просто, то контейнеры - это что-то среднее между виртуальными машинами, с полной изоляцией и chroot окружением. Все процессы выполняются в изолированном пространстве, но в то же время на одном ядре, что позволяет экономить ресурсы основной системы.
Docker не реализует собственную систему контейнеров, он использует LXC и выступает в качестве оболочки, которая позволяет автоматически загружать, устанавливать и запускать образы контейнеров, а также управлять ими. Все действия выполняются в несколько команд и намного проще чем при использовании lxc. В этой статье мы рассмотрим как выполняется установка docker на Ubuntu, а также как использовать контейнеры в Linux.
Содержание статьи
- Системные требования
- Установка Docker в Ubuntu
- Установка Docker Compose
- Утилита Docker
- Использование Docker в Ubuntu
- Выводы
Системные требования
Для работы docker ваша система должна отвечать таким требованиям:
- Программа работает только на системах 64 битной архитектуры;
- Необходимо ядро версии не ниже чем 3.10. В более старых версиях реализованы не все необходимые возможности, и это будет вызывать различные ошибки;
- Быстрый интернет - для загрузки или выгрузки образов контейнера.
Если вы используете Ubuntu версии выше 16.04, то проблем с ядром не возникнет, так как эта система поставляется с ядром 4.2 по умолчанию.
Установка Docker в Ubuntu
Перед тем как переходить к установке самой программы, нужно обновить систему до актуального состояния. Для этого выполните:
sudo apt update && sudo apt upgrade
Перед тем как установить Docker Ubuntu необходимо установить дополнительные пакеты ядра, которые позволяют использовать Aufs для контейнеров Docker. С помощью этой файловой системы мы сможем следить за изменениями и делать мгновенные снимки контейнеров:
sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual
Ещё надо установить пакеты, необходимые для работы apt по https:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
После того как все приготовления завершены и вы убедились что ваша система полностью готова, можно перейти к установке. Мы будем устанавливать программу из официального репозитория разработчиков. Сначала надо добавить ключ репозитория:
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 bionic stable"
sudo apt update && apt-cache policy docker-ce
И установка Docker на Ubuntu:
sudo apt install -y docker-ce
Теперь установка Docker Ubuntu и всех необходимых компонентов завершена. Первой командой мы добавили ключ репозитория разработчиков, второй - сам репозиторий. Далее обновили списки пакетов и сообщили системе что можно заменять системные пакеты на пакеты из этого репозитория.
Чтобы завершить установку осталось добавить нашего пользователя в группу docker. Иначе при запуске утилиты вы будете получать ошибку подключения к сокету:

Для добавления выполните:
sudo usermod -aG docker $(whoami)

Затем проверяем запущен ли сервис:
sudo systemctl status docker

Все готово к работе. Теперь рассмотрим подробнее использование Docker.
Установка Docker Compose
Сейчас работа с docker не обходится без утилиты управления контейнерами docker compose, давайте её тоже установим. Чтобы установить docker compose Ubuntu выполните последовательность команд:
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Утилита была загружена из официального сайта и теперь вы можете посмотреть её версию:
docker-compose --version
Утилита Docker
Все действия с контейнерами выполняются утилитой docker. Ее можно запускать от имени вашего пользователя после того, как он был добавлен в группу программы. Синтаксис утилиты очень прост:
$ docker опции команда опции_команды аргументы

Давайте сначала рассмотрим основные опции утилиты их всего несколько:
- -D - включить режим отладки;
- -H - подключиться к серверу, запущенному на другом компьютере;
- -l - изменить уровень ведения логов, доступно: debug,info,warn,error,fatal;
- -v - показать версию;
- --help вывести справку по команде или утилите в целом;
Команд намного больше, ниже приведены все команды, которые вы можете использовать в своих программах:
- attach - подключиться к запущенному контейнеру;
- build - собрать образ из инструкций dockerfile;
- commit - создать новый образ из изменений контейнера;
- cp - копировать файлы между контейнером и файловой системой;
- create - создать новый контейнер;
- diff - проверить файловую систему контейнера;
- events - посмотреть события от контейнера;
- exec - выполнить команду в контейнере;
- export - извлечь содержимое контейнера в архив;
- history - посмотреть историю изменений образа;
- images - список установленных образов;
- import - создать контейнер из архива tar;
- info - посмотреть информацию о системе;
- inspect - посмотреть информацию о контейнере;
- kill - остановить запущенный контейнер;
- load - загрузить образ из архива;
- login - авторизация в официальном репозитории Docker;
- logout - выйти из репозитория Docker;
- logs - посмотреть логи контейнера;
- pause - приостановить все процессы контейнера;
- port - подброс портов для контейнера;
- ps - список запущенных контейнеров;
- pull - скачать образ контейнера из репозитория;
- push - отправить образ в репозиторий;
- restart - перезапустить контейнер;
- rm - удалить контейнер;
- run - выполнить команду в контейнере;
- save - сохранить образ в архив tar;
- search - поиск образов в репозитории по заданному шаблону;
- start - запустить контейнер;
- stats - статистика использования ресурсов контейнером;
- stop - остановить контейнер;
- top - посмотреть запущенные процессы в контейнере;
- unpause - проложить выполнение процессов в контейнере.
В этой статье мы будем часто использовать команду run, рассмотрим ее опции:
- -e - переменные окружения для команды;
- -h - имя хоста контейнера;
- -i - интерактивный режим, связывающий stdin терминала с командой;
- -m - ограничение памяти для команды;
- -u - пользователь, от имени которого будет выполнена команда;
- -t - связать tty с контейнером для работы ввода и вывода;
- -v - примонтировать директорию основной системы в контейнер.
Теперь, когда мы рассмотрели все основы, приведем несколько примеров работы с контейнерами. Это очень просто.
Использование Docker в Ubuntu
Чтобы убедиться что все работает давайте запустим тестовый образ. Для этого наберите:
docker run hello-world
Больше ничего не нужно, программа сама скачает образ, и выполнит оболочку в нем. Вы увидите сообщение Hello from Docker:
Поиск и установка контейнеров
Использование docker очень простое по своей сути. Если вы не знаете название нужного пакета, можете воспользоваться поиском, например, найдем Ubuntu:
docker search ubuntu
Утилита выведет список всех доступных для загрузки образов из репозитория Docker, которые содержат такое слово. Колонка Official означает, что образ поддерживается официальным разработчиком, а Stars - это количество пользователей, которым этот образ понравился.
Для загрузки образа на локальный компьютер используйте команду pull:
docker pull ubuntu
После завершения загрузки вы можете посмотреть список установленных образов:
docker images
Запуск контейнера
Теперь, давайте запустим командную оболочку контейнера с помощью команды run, для получения интерактивного доступа используйте опции -i и -t:
docker run -it ubuntu
Вы в окружении контейнера. У вас есть права суперпользователя, но вы не можете получить доступ к основной системе. Контейнер содержит минимум необходимых файлов, нет даже текстовых редакторов. Для установки чего-либо сначала нужно обновить репозиторий:
apt-get update
Например, установим утилиту dialog:
apt-get install -y dialog
Сохранение изменений
Вы можете изменять контейнер как захотите, добавлять и удалять программы и многое другое. Но когда вы его удалите, все изменения будут потеряны. Вы можете создать новое образ из модифицированного контейнера, для этого используется команда commit. Сначала смотрим список запущенных контейнеров:
docker ps
Отсюда возьмите id контейнера, затем выполните такую команду для создания нового образа:
docker commit -m "изменения" -a "автор" ид_контейнера repository/имя
Например:
docker commit -m "Zenity" -a "Seriyyy95" d034b794a3bf repository/ubuntu-zenity
Новый образ был сохранен на вашем компьютере и вы можете увидеть его в списке образов:
docker images
Список контейнеров
Как я уже говорил, вы можете посмотреть список запущенных контейнеров с помощью команды ps:
docker ps
Если вам нужны все контейнеры, используйте опцию -a:
docker ps -a
Чтобы вывести последний созданный контейнер, используйте:
docker ps -l
Управление контейнерами
Чтобы остановить запущенный контейнер используйте команду stop:
docker stop d034b794a3bf
Для запуска:
docker start d034b794a3bf
Вы можете подключиться к запущенному контейнеру с помощью attach:
docker attach d034b794a3bf
Чтобы удалить контейнер со всеми изменениями выполните:
docker rm d034b794a3bf
Выводы
Вы этой статье мы рассмотрели как выполняется установка Docker Ubuntu. В этом дистрибутиве процесс установки не будет трудным даже для новичков. А возможность установки различных дистрибутивов в несколько команд может быть полезной во многих ситуациях. А вы пользуетесь Docker? Для решения каких задач? Напишите в комментариях!
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали





















Достаточно зайти на оф. сайт докера и посмотреть гид по установке - статья пустая и никчемная
А мне помогла и стала подспорьем =)
Автору респект! Очень компактно и по существу. Мне помогла тоже!
после команды: docker run hello-world
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
Перелогиньтесь в системе.
Хорошая статья.
Для начала вполне интересно. Вот руки дойдут .. буду пробовать 🙂
Еще бы посмотреть, как правильно ставить графические приложения в двух вариантах, с прокидываем конфига с основной машины и без него.
Сегодня международный день грамотности и я пришел что бы карать за очепятки! Но не буду этого делать потому что я добрый)
Использование Docker в Ubuntu
Чтобы убедиться что все работает давайте запустим тестовый образ. Для этого наберите:
docker run hello-world
после этой команды у меня возникает ошибка
docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.29/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
помогите пожалуйста : в чем проблема.,,
Запускайте от sudo
попробуйте после установки всего перезагрузить компьютер, должно помочь и работать без sudo
Спасибо за мануал! Очень помог!!!
После команды sudo apt update && sudo apt upgrade, и перезагрузки сервера , отвалился SSH хотя всё остальное работает, теперь жду админа что бы разобрался что там случилось
вот зарекался же не делать upgrade
Мануал хорош, но у вас 2 скрина перепутаны. Там где описана команда docker stop - у вас стоит скрин для docker rm. А там где описана команда docker rm - у вас стоит скрин от docker run. Исправьте пож-ста.
В параграфе "СОХРАНЕНИЕ ИЗМЕНЕНИЙ" у вас в предложении: " Вы можете создать новоЕ образ..."
не добавляется репозиторий:
sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
подскажите что делать?
У меня без судо комманда docker не работает
Вводил sudo usermod -aG docker $(whoami)
не помогло
вывод:
$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
$ docker search ubuntu
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/search?limit=25&term=ubuntu: dial unix /var/run/docker.sock: connect: permission denied
Попробуйте набрать команду вместо:
sudo usermod -aG docker $(whoami)
Вот такую:
sudo usermod -aG docker ${USER}
Чтобы применить добавление нового члена группы, выйдите и войдите на сервер или введите следующее:
su - ${USER}
Вы должны будете ввести пароль вашего пользователя, чтобы продолжить.
Проверьте, что ваш пользователь добавлен в группу docker, введя следующее:
id -nG
Outputsammy sudo docker
Удачи!
после команды: sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual
выходит сообщение об отсутствии пакетов linux-image-extra-5.11.0-46-generic.
Нашел такой вот выход:
Сначала ввел команду:
sudo apt install --reinstall linux-image-generic
После перезагрузки:
sudo apt install linux-modules-extra-$(uname -r) linux-image-extra-virtual
И все норм.
Добрый вечер.
Нет информации как выйти из контейнера без остановки.
Так же нет команды как запустить контейнер в режиме демона.
Добавьте пожалуйста.