Product SiteDocumentation Site

12.2.3. Сборка из Dockerfile

Самый простой способ собрать образ — использовать существующий Dockerfile.
Пример Dockerfile:
FROM alt:alt

LABEL maintainer="admin@test.alt"
LABEL description="Demo image for buildah examples"

ENV APP_DIR=/app
WORKDIR $APP_DIR

# Установка пакетов
RUN apt-get update && \
    apt-get install -y curl bash && \
    apt-get clean

# Копирование файлов в контейнер
COPY hello.sh .

# Сделать скрипт исполняемым
RUN chmod +x hello.sh

# Порт (для примера)
EXPOSE 8090

# Команда по умолчанию
CMD ["./hello.sh"]
Файл hello.sh:
#!/bin/sh
echo "Hello from Buildah demo container!"
echo "Container hostname: $(hostname)"
Сборка образа:
$ buildah bud -t myapp:latest .
Ожидаемый вывод:
STEP 1/10: FROM alt:latest
STEP 2/10: LABEL maintainer="admin@test.alt"
STEP 3/10: LABEL description="Demo image for buildah examples"
STEP 4/10: ENV APP_DIR=/app
STEP 5/10: WORKDIR $APP_DIR
STEP 6/10: RUN apt-get update && apt-get install -y curl bash && apt-get clean
...
STEP 7/10: COPY hello.sh .
STEP 8/10: RUN chmod +x hello.sh
STEP 9/10: EXPOSE 8090
STEP 10/10: CMD ["./hello.sh"]
COMMIT myalt
Getting image source signatures
Copying blob 7066ca05e439 skipped: already exists
Copying blob fb9fc20ce189 skipped: already exists
Copying blob 475224c3ec5c done   |
Copying config 5674dd2fc2 done   |
Writing manifest to image destination
--> 5674dd2fc28a
Successfully tagged localhost/myalt:latest
5674dd2fc28ac10beb78fe9ee78ffc6788f731c1560c4dd2a49edace7bacc68d

Примечание

По умолчанию команда buildah bud использует файл Dockerfile в текущем каталоге. Если используется файл с другим именем или расположением, необходимо указать его с помощью параметра -f, при этом также требуется указать контекст сборки (обычно текущий каталог .).

Примечание

Ошибка no space left on device при работе с контейнерами часто связана с переполнением каталога /tmp, используемого для хранения временных файлов.
В дистрибутивах ALT каталог /tmp по умолчанию размещается в файловой системе tmpfs. Его размер определяется автоматически (если параметр size не задан) и обычно составляет до половины объёма оперативной памяти.
Возможные решения:
  • увеличить объём доступной памяти за счёт подключения или расширения раздела подкачки (swap);
  • явно задать размер tmpfs в файле /etc/fstab:
    tmpfs		/tmp			tmpfs	nosuid,size=4G		0 0
    
    После внесения изменений необходимо перемонтировать файловую систему:
    # mount -o remount /tmp
Альтернативный вариант — использовать другой каталог для временных файлов, например /var/tmp.