Какой наименьший образ можно использовать для бесконечной работы docker-compose?

Один из моих модульных тестов убивает работающий контейнер Docker. Чтобы модульный тест работал, мне нужно запустить контейнер с docker-compose run, чтобы ему было что убивать.

Какой самый маленький и простой образ можно использовать с docker-compose.yml, чтобы это произошло?

Обратите внимание, что Dockerfile не требуется.

Пожалуйста, прочтите раздел помощи, чтобы ознакомиться с сайтом. Это не форум. Не редактируйте вопросы, содержащие ответы. Вы уже приняли ответ, который считаете лучшим. Если вы чувствуете, что вам нужно дать свой собственный ответ, просто сделайте это... в качестве ответа.

Zeitounator 02.04.2022 21:19
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
1
41
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам просто нужен файл docker-compose для этого

version: '3.9'
services:
  myservice:
    image: alpine:latest
    command: tail -f /dev/null

Вы, вероятно, можете найти другие образы для запуска, если предпочитаете что-то другое. nginx:alpine приходит на ум. Для этого не нужна команда, поэтому вы должны сохранить строку в файле docker-compose.

Является ли Alpine самым маленьким изображением, которое можно использовать?

Eric Hansen 02.04.2022 20:11

@EricHansen извлекает набор изображений-кандидатов и сравнивает их размеры. busybox может быть меньше.

Zeitounator 02.04.2022 20:14

Нет, это не так. Это всего 5-6 МБ, так что это довольно мало. Если размер важен, вы можете заменить alpine:latest на busybox:latest, который весит всего 1,24 МБ. Вы, вероятно, можете получить что-то еще меньше, сделав изображение самостоятельно.

Hans Kilian 02.04.2022 20:15
Ответ принят как подходящий

Если вы ищете буквально самое маленькое изображение, и ему буквально не нужно ничего делать, кроме как не выходить, k8s.gcr.io/pause должно быть близко.

Этот образ является частью Kubernetes, и вы можете прочитать его источник. Makefile компилирует небольшую программу на C в статический двоичный файл, а затем встраивает его в образ FROM scratch. Это означает, что он даже не тратит мегабайт на статический двоичный файл BusyBox, поэтому он не содержит ненужной чепухи, такой как оболочка, tail, менеджер пакетов Alpine apk или вообще что-либо еще.

~% docker images
REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
k8s.gcr.io/pause   3.7       221177c6082a   3 weeks ago    711kB
busybox            latest    2fb6fc2d97e1   3 weeks ago    1.24MB
alpine             latest    76c8fb57b6fc   4 days ago     5.57MB

Единственная вещь, которую делает этот образ, кроме сна навсегда, - это замечает, завершаются ли какие-либо дочерние процессы и ждать(2) для них. Поскольку ожидается, что это будет процесс с идентификатором 1, это очищает любые осиротевшие процессы, которые переназначаются процессу init (эвфемистически, «пожиная зомби»). Kubernetes использует его в качестве корня для модуля с несколькими контейнерами, где модули используют разные пространства имен; также см. Какую работу выполняет процесс в контейнере "gcr.io/google_containers/pause:0.8.0"? или Всемогущий контейнер с паузами Яна Льюиса (который включает весь исходный код C как часть сообщения в блоге).

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

Потрясающе, спасибо! Я думаю, что, возможно, единственной меньшей задачей будет создание нашего собственного «контейнера без выхода», но тогда нам также придется беспокоиться о конвейерах и модульных тестах для создания этого образа и его доступности!

Eric Hansen 03.04.2022 02:52

Другие вопросы по теме