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? Для решения каких задач? Напишите в комментариях!
Достаточно зайти на оф. сайт докера и посмотреть гид по установке - статья пустая и никчемная
А мне помогла и стала подспорьем =)
Автору респект! Очень компактно и по существу. Мне помогла тоже!
после команды: 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
И все норм.
Добрый вечер.
Нет информации как выйти из контейнера без остановки.
Так же нет команды как запустить контейнер в режиме демона.
Добавьте пожалуйста.