Как запустить Ubuntu в качестве контейнера Docker
Вместо того, чтобы устанавливать Ubuntu на виртуальную машину, вы можете установить ее как контейнер Docker.
Согласно опросу разработчиков Stack Overflow 2022 и 2023 годов, Docker является самым популярным инструментом программирования. Он широко используется в индустрии информационных технологий и произвел революцию в способах развертывания приложений.
Контейнеры Docker немного похожи на виртуальные машины, но они легче и содержат только основные элементы операционной системы. Чтобы понять, насколько минимальными могут быть контейнеры Docker, давайте посмотрим, как запустить Ubuntu на Docker.
Шаг 1: Получение образа Ubuntu Docker
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. Чтобы воскресить недавно загруженный образ Ubuntu Docker, выполните следующую команду:
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, но в этом случае вы обнаружите, что эта команда недоступна, поскольку пакет lsb-core не установлен в образе Ubuntu Docker по умолчанию. Помните, что образы Docker содержат только основные элементы и ничего больше.
К счастью, мы можем проверить информацию об операционной системе с помощью команды cat, которая является частью оболочки Bash.
cat /etc/os-release
Как видно из вывода, это LTS-версия Ubuntu, выпущенная в 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
Не забудьте заменить container_id в следующей команде на правильный. Кроме того, имена образов Docker могут быть только строчными.
sudo docker commit -p 524aa76baafb myubuntu
Предыдущая команда приостанавливает контейнер перед сохранением и создает новый образ Docker с именем myubuntu. Новый образ Docker будет содержать все внесенные вами изменения. И с учетом сказанного вы только что создали собственный образ Ubuntu Docker.
Перечислите свои образы Docker с помощью команды sudo docker images; ваше новое пользовательское изображение должно быть указано вместе с ним.
Сохранение данных в контейнере Ubuntu 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
Команда загрузит образ Ubuntu и создаст каталог /data внутри контейнера Docker. Каталог /data сопоставляется с созданной ранее папкой Docker_Share.
Вы можете получить доступ к любым созданным или измененным файлам в каталоге /data контейнера, используя каталог Docker_Share. Обратное тоже верно; Docker будет реплицировать любые изменения в файле в каталоге Docker_Share в каталоге /data контейнера.
Docker — отличная замена виртуальным машинам
Docker — очень мощная технология, позволяющая развертывать и запускать приложения в безопасной среде. Например, вы можете использовать его для широкого круга задач, и в большинстве случаев вам будет достаточно легкого контейнера Ubuntu Docker вместо запуска виртуальной машины.