Как запустить Ubuntu как контейнер Docker

Согласно опросу разработчиков Stack Overflow за 2022 и 2023 годы, Docker является самым популярным инструментом программирования. Он широко используется в сфере информационных технологий и произвёл революцию в способах развёртывания приложений.
Контейнеры Docker немного похожи на виртуальные машины, но они более лёгкие и содержат только основные элементы операционной системы. Чтобы понять, насколько минималистичными могут быть контейнеры Docker, давайте посмотрим, как можно запустить Ubuntu в Docker.
Шаг 1: Получение образа Ubuntu Docker
Если у вас не установлен Docker, следуйте нашему руководству по установке Docker в Ubuntu. И, конечно, вы также можете установить Docker в macOS и Windows.
Docker Hub — это рекомендуемое хранилище для получения общедоступных проверенных и официальных образов Docker. Вы также можете использовать Docker Hub для управления и создания частных образов Docker.
Облачные провайдеры, такие как Azure и AWS, также предоставляют репозитории Docker, в которых вы можете размещать свои собственные образы Docker и управлять ими.
Вы можете загрузить последний образ Ubuntu Docker с помощью следующей команды:
sudo docker pull ubuntu
Docker загрузит последнюю версию образа на ваш компьютер, если она ещё не сохранена локально.
Если вас интересует конкретная версия, просто посмотрите доступные теги образа в Docker Hub, а затем загрузите его с помощью этого конкретного тега. Например, чтобы загрузить Ubuntu 20.04, выполните:
sudo docker pull ubuntu:20.04
Вы можете вывести список всех образов Docker на своём компьютере с помощью команды sudo docker images.
Шаг 2: Запуск образа Ubuntu Docker
Образ Docker — это просто набор инструкций для создания контейнера. Контейнер — это запущенный экземпляр образа Docker. Чтобы запустить образ Docker Ubuntu, который вы только что загрузили, выполните следующую команду:
sudo docker run -ti --rm ubuntu /bin/bash
Эта команда сообщает Docker, что нужно запустить контейнер Docker Ubuntu в интерактивном режиме терминала (-ti). Аргумент /bin/bash указывает контейнеру, что нужно запустить терминал командной оболочки Bash. Наконец, флаг --rm указывает Docker автоматически удалить контейнер Ubuntu Docker после его остановки.
Оболочка запускается от имени пользователя root, и терминал выглядит так же, как в обычной системе Linux. По умолчанию контейнер получает случайное имя хоста.
Вы также заметите, что в образе нет графического интерфейса или многих других стандартных инструментов командной строки, которые поставляются с Ubuntu. Образ Ubuntu Docker занимает всего около 78 МБ, что очень мало.
Запуск команд Linux в Ubuntu Docker
Обычно вы проверяете информацию об ОС в Linux с помощью команды lsb_release -a, но в этом случае вы обнаружите, что эта команда недоступна, потому что в образе Docker Ubuntu по умолчанию не установлен пакет lsb-core. Помните, что образы Docker содержат только основные элементы и ничего больше.
К счастью, мы можем проверить информацию об ОС с помощью команды cat, которая входит в состав оболочки Bash.
cat /etc/os-release
Как видно из вывода, это версия Ubuntu LTS, выпущенная в 2022 году. Благодаря возможностям Docker мы можем запускать Ubuntu в Docker, используя очень мало системных ресурсов.
А поскольку это просто облегчённая ОС, мы можем установить нужные нам приложения с помощью знакомых команд Ubuntu. Сначала обновите источники пакетов и установите lsb-core, введя:
apt update && apt install lsb-core
Вам не нужно использовать команду sudo, так как вы вошли в оболочку Docker как пользователь с правами root.
После установки вы можете запустить команду lsb_release -a, и на этот раз вы получите результат.
Сохранение состояния контейнера Docker
Если вы остановите контейнер Docker на этом этапе, вы потеряете все внесённые изменения, включая обновления программного обеспечения и установленные инструменты. Именно так устроены контейнеры Docker: их легко заменить, остановить и управлять ими.
Как вы, возможно, уже знаете, Docker — это универсальный инструмент, который позволяет сохранять состояние контейнеров, если вы этого хотите. Сначала проверьте идентификатор контейнера Docker Ubuntu с помощью следующей команды:
sudo docker ps
Предыдущая команда выводит список всех контейнеров Docker на вашем ПК. Образ Ubuntu в выводе выше имеет идентификатор 524aa76baafb, у вас он будет другим.
Сохраните состояние контейнера, выполнив следующую команду:
docker commit -p container_id new_container_name
Не забудьте заменить идентификатор_контейнера в следующей команде на правильный. Кроме того, имена образов Docker могут быть только строчными.
sudo docker commit -p 524aa76baafb myubuntu
Предыдущая команда приостановит работу контейнера перед его сохранением и создаст новый образ Docker с именем myubuntu. Новый образ Docker будет содержать все внесённые вами изменения. Таким образом, вы только что создали собственный образ Docker Ubuntu.
Выведите список образов Docker с помощью команды sudo docker images; ваш новый пользовательский образ должен быть в этом списке.
Сохранение данных в контейнере Ubuntu Docker
Ещё одна мощная функция Docker — возможность сохранять данные или обмениваться ими с хост-машиной. Есть два основных варианта: использование подключённых томов или томов Docker. Docker рекомендует использовать тома Docker, потому что они лучше, чем подключённые тома.
Вы можете создать том Docker в любом месте на вашем ПК. Давайте создадим его в домашнем каталоге и назовём Docker_Share:
sudo mkdir -p Docker_Share
Затем остановите контейнер Ubuntu с помощью следующей команды, заменив container_id на фактический идентификатор контейнера Ubuntu Docker:
sudo docker stop container_id
Наконец, мы можем запустить образ Ubuntu Docker для сохранения данных с помощью каталога Docker_Share, используя приведённую ниже команду. Кроме того, вы можете создать файл docker-compose, чтобы легко запускать образы Docker.
sudo docker run -ti --rm -v ~/Docker_Share:/data ubuntu /bin/bash
Вы можете получить доступ к любым созданным или изменённым файлам в каталоге /data контейнера, используя каталог Docker_Share. Верно и обратное: Docker будет копировать любые изменения файлов в каталоге Docker_Share в каталог /data контейнера.
Docker - отличная замена виртуальным машинам
Docker — это очень мощная технология, которая позволяет развёртывать и запускать приложения в безопасной среде. Например, вы можете использовать её для широкого спектра задач, и в большинстве случаев вам будет достаточно запустить облегчённый контейнер Docker Ubuntu вместо виртуальной машины.