Sudo в контейнері Docker на основі Ubuntu

Автор | 28.03.2023

Мені часом потрібно перевірити якісь дії чи сценарії в Ubuntu, іноді я для цього використовував віртуальні машини, але для швидких тестів я спробую використати Docker.

На моєму сайті я вже маю декілька статей про Docker, цей запис це еволюційне продовження моїх експериментів.

Щоб створити в Docker образ з Ubuntu, що містить пакет sudo та можливість створювати користувачів, потрібно створити Dockerfile з таким змістом:

FROM ubuntu:latest

# Оновити пакетний менеджер та встановити пакет sudo
RUN apt-get update && apt-get install -y sudo

# Створити користувача з іменем user та паролем user
RUN useradd -m user && echo "user:user" | chpasswd && adduser user sudo

# Встановити nginx та Flask
RUN apt-get update && apt-get install -y nginx python3-pip && pip3 install Flask

# Запустити nginx при старті контейнера
CMD ["nginx", "-g", "daemon off;"]

Цей Dockerfile базується на останньому офіційному образі Ubuntu, оновлює пакетний менеджер, встановлює пакет sudo, створює користувача з іменем “user” та паролем “user”, надає йому права sudo, встановлює Nginx та Flask, та налаштовує запуск Nginx при старті контейнера.

Щоб створити образ з Dockerfile, потрібно виконати команду docker build. Наприклад:

docker build -t my-ubuntu-image .

Ця команда збереже створений образ під ім’ям “my-ubuntu-image”.

Після створення образу, можна створити контейнер на його основі за допомогою команди docker run. Наприклад:

docker run -it --name my-ubuntu-container my-ubuntu-image

Ця команда створить новий контейнер на основі образу “my-ubuntu-image”, та запустить його в інтерактивному режимі з ім’ям “my-ubuntu-container”.

Щоб зберегти контейнер в Docker як образ, виконайте наступну команду у терміналі:

docker commit <container_id> <image_name>:<tag>

де <container_id> – це ідентифікатор контейнера, який ви хочете зберегти як образ, <image_name> – це ім’я образу, яке ви хочете надати вашому контейнеру, і <tag> – це тег образу, який ви хочете встановити.

Наприклад, якщо ви хочете зберегти контейнер з ідентифікатором c2ff4bf4362a як образ з іменем myimage та тегом v1, то команда буде мати наступний вигляд:

docker commit c2ff4bf4362a myimage:v1

Після того, як команда виконається успішно, ви можете переглянути список доступних образів, використовуючи команду docker images. Збережений вами образ буде вказаний у списку разом з іншими образами, які ви маєте на вашій машині.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *