LINUX.ORG.RU
ФорумAdmin

Создание образа docker

 ,


1

1

Добрый день! Дано: Astra Linux 1.7,

docker 1.5-2  all transitional package
docker-buildx 0.10.5astra1 amd64 Docker CLI plugin for extended build capabilities with BuildKit
docker.io 24.0.2+astra16 amd64 Linux container runtime

С помощью команд скачала и сохранила простейший образ для обучения:

docker pull hello-world
docker images
docker save hello-world > hworld.tar

Вижу, что в tar архиве расположен исполняемый файл, при запуске которого в текущей системе отображается «Hello World» Вопрос - как сделать свой собственный образ с нуля, если есть только исполняемый файл?

https://www.dmosk.ru/miniinstruktions.php?mini=docker-base-image В этой статье написано, что из репозитория ставится система. А как простейший образ без репозитория сделать?

Перемещено hobbit из general



Последнее исправление: hobbit (всего исправлений: 2)

В этой статье написано, что из репозитория ставится система. А как простейший образ без репозитория сделать?

Мне кажется ты не понял сути докера. А как ты собрался собрать образ без системы? так не бывает. Образ делается на базе какой либо ОС. Берешь любой готовый базовый образ чистой системы типо альпайна или убунты (на свой вкус) и добавляешь свой бинарь куда тебе надо ну и настрой запуск через энтрипоинт или cmd если необходимо (но для этого придется почитать что это такое тут https://docs.docker.com/reference/dockerfile/#entrypoint)

Noob_Linux ★★★★
()

С помощью команд скачала и сохранила простейший образ для обучения docker pull hello-world docker images docker save hello-world > hworld.tar

Тупое скачивание готовых образов ничему не обучает!
Вам надо читать про Dokerfile и команду doker build.
Вот, для примера, статья - https://habr.com/ru/articles/713942/
и вот - https://habr.com/ru/companies/ruvds/articles/439980/

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)

А как простейший образ без репозитория сделать?

В общем случае никак, ты хочешь странного

Но image из одной программы в принципе можно сделать, если она написана на go. Т.к. программы на go это монстры (на десятки и сотни мегабайт), в которых входят вообще все используемые библиотеки

Теоретически, наверное можно в си сделать статическую сборку со всеми используемыми библиотеками, но сомневаюсь

router ★★★★★
()
Ответ на: комментарий от Noob_Linux

Не надо путать контейнер с виртуалкой. Докерный контейнер — это всего лишь процесс, запущенный в несистемных пространствах имён. И всё. Другой вопрос — что образы докера удобно использовать для скриптоты и динамически связанных программ, чтобы помоечку всю с собой носить, а эти сборки удобнее делать на базе настоящего дистрибутива линукса. Но это вовсе не обязательно.

ugoday ★★★★★
()
Ответ на: комментарий от kostik87

Если прочитать внимательно, то в static от дебиана там только

    ca-certificates
    A /etc/passwd entry for a root user
    A /tmp directory
    tzdata

В base к этому списку добавляется

glibc
libssl

размер образа 1.99Mb для static и 20,7Mb для base:

REPOSITORY                          TAG       IMAGE ID       CREATED   SIZE
gcr.io/distroless/base-debian12     latest    7273f3276b21   N/A       20.7MB
gcr.io/distroless/static-debian12   latest    58f2645e2d57   N/A       1.99MB

Сравните с обычным образом debian весом 117MB

bieming
()