Как предотвратить “сворачивание” системы

Вопрос или проблема

Сегодня я заметил новое сообщение, когда зашел в свой контейнер Docker на Ubuntu 18.04.

Эта система была минимизирована путем удаления пакетов и контента, которые не требуются в системе, в которую не входят пользователи.

Чтобы восстановить этот контент, вы можете выполнить команду ‘unminimize’.

Тем не менее, это контейнер, в который я захожу время от времени.

На мой взгляд, это не очень разумная стратегия изменять системы без согласия пользователя таким образом, но оставим это на своем месте. Как я могу предотвратить минимизацию моих систем в Ubuntu?

Минимизация нарушает функциональность моего контейнера, и команда unminimize завершает работу с ошибкой ядра.

Отвечаю, потому что у меня нет репутации для комментариев.

Хотя вы технически не можете предотвратить минимизацию вашей установки Ubuntu на базе Docker (поскольку Docker-образ идет в таком виде, когда вы его загружаете), вы определенно можете это отменить: добавьте вызов

yes | unminimize

в ваш Dockerfile. Команда “unminimize” (/usr/local/sbin/unminimize) отменяет процесс минимизации; поскольку она интерактивна и задает ряд вопросов “y/n“, мы используем команду “yes“, которая постоянно выводит строку “y” до тех пор, пока не будет завершена.

Дело не в том, что Canonical изменила образ без согласия пользователей. То, что вы получаете, это преднастроенный ubuntu-minimal, который используется большинством провайдеров облачного хостинга и контейнеров, таких как Docker.

Вы можете узнать больше о том, что такое Minimal Ubuntu.

Цитата для контекста:

Minimal Ubuntu – это набор образов Ubuntu, предназначенных для автоматизированного развертывания в масштабе и доступных на различных облачных платформах. Они используют оптимизированные ядра и оптимизированный процесс загрузки на своей целевой вычислительной платформе. Эти образы имеют значительно уменьшенный набор пакетов по умолчанию, без множества полезных инструментов для интерактивного использования. Они намного меньше, загружаются быстрее и требуют меньше обновлений безопасности со временем, поскольку в них установлено меньше пакетов.

Чтобы ответить на ваш вопрос – у вас есть более одного выбора:

  1. Используйте что-то другое, кроме ubuntu-minimal, в качестве базового образа
  2. Настройте образ, чтобы включить необходимые вам пакеты

Чтобы предотвратить минимизацию образов docker ubuntu, я написал Dockerfile. Пожалуйста, разверните контейнер, используя содержимое ниже Dockerfile.

From ubuntu
#Цель: Как развернуть контейнер ubuntu без минимизированных пакетов
#RUN apt-get install apt-utils -y
ENV DEBIAN_FRONTEND noninteractive
ENV TZ=Asia/Kolkata DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt install tzdata -y && apt install net-tools vim man file -y
RUN yes| unminimize
RUN apt-get update -y && apt-get upgrade -y && apt-get install ubuntu-minimal ubuntu-server-minimal -y
RUN  apt-get install -y vim perl wget tar man sudo adduser netstat-nat net-tools curl w3m
RUN useradd -m  -s /bin/bash ubuntu
RUN usermod -aG sudo ubuntu && echo "ubuntu ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ubuntu
RUN chmod 044 /etc/sudoers.d/ubuntu
USER ubuntu:ubuntu
WORKDIR /home/ubuntu
CMD ["/bin/bash"]
#docker run -itd --privileged #type_here_target_image_id /usr/sbin/init #команда для запуска systemctl внутри контейнера Docker

ubuntu 24.04

по умолчанию не имеет unminimize

вот как это исправить:

apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y unminimize \
&& rm -rf /var/lib/apt/lists/* \
&& yes | /usr/local/sbin/unminimize

связанная жалоба

Ответ или решение

Для предотвращения минимизации системы в контейнере Ubuntu, работающем на базе Docker, важно понимать концепцию минимизации и ваши возможные шаги по управлению этой проблемой. Минимизация в Ubuntu подразумевает удаление ненужных пакетов для оптимизации ресурсоемкости системы. Она чаще применяется в облачных окружениях и контейнерах, где важна эффективность работы и минимальные размеры образа.

Шаги для предотвращения минимизации

  1. Использование подходящего базового образа:
    Вместо использования образа ubuntu-minimal, который по умолчанию минимизирован, вы можете использовать стандартный образ Ubuntu. Это позволит вам избежать ненужного удаления пакетов, так как он содержит более полный набор инструментов и пакетов изначально.

    Пример в Dockerfile:

    FROM ubuntu:latest
  2. Обновление образа и установка необходимых пакетов:
    Вы можете явно установить необходимые пакеты для вашего окружения. Важно обратить внимание на процесс установки и конфигурации.

    Пример установки нужных пакетов:

    RUN apt-get update && apt-get install -y \
       vim \
       net-tools \
       curl \
       && rm -rf /var/lib/apt/lists/*
  3. Автоматическое восстановление с помощью unminimize:
    Если вы уже используете минимизированный образ, у вас есть возможность восстанавливать отсутствие пакетного обеспечения с помощью команды unminimize. Это командное действие интерактивно, но для автоматизации вы можете использовать команду yes.

    Пример использования:

    RUN yes | unminimize
  4. Настройка переменных окружения для упрощения установки:
    Установите переменные окружения для автоматизации конфигурации, таких как DEBIAN_FRONTEND=noninteractive, чтобы избежать интерактивных запросов во время установки пакетов.

    Пример:

    ENV DEBIAN_FRONTEND=noninteractive
  5. Создание пользовательского окружения:
    Если вам необходимо настроить доступ пользователей, создайте нового пользователя, добавьте его в группу sudo и настройте права.

    Пример:

    RUN useradd -m -s /bin/bash ubuntu \
       && usermod -aG sudo ubuntu \
       && echo "ubuntu ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ubuntu \
       && chmod 044 /etc/sudoers.d/ubuntu
  6. Контроль после установки:
    После завершения конфигурации убедитесь, что все нужные инструменты установлены и функционируют. Это предостережение поможет поймать любые проблемы, прежде чем они окажутся в производственной среде.

Заключение

В целом, несмотря на то, что для предотвращения минимизации напрямую нет возможности при использовании минимизированных образов, использование стандартных образов Ubuntu и последующее добавление нужных библиотек и инструментов представляет собой эффективное решение. Создавая соответствующий Dockerfile, вы сможете поддерживать необходимую структуру вашего контейнера, а также избежать ненужных проблем, которые могут возникнуть из-за минимизации.

Оцените материал
Добавить комментарий

Капча загружается...