Добавить оболочку или bash к образу docker (Дистрибутив на основе Debian GNU / Linux) - PullRequest
1 голос
/ 05 апреля 2020

Я хочу добавить shell или bash к моему образу для выполнения команды установки.

Я скопировал /bin/bash на моей виртуальной машине в свой образ на Dockerfile:

COPY /bin/bash /bin/

Но когда я выполняю команду docker:

 docker run -it --entrypoint "/bin/bash" <my_image>

Тогда я получаю следующую ошибку:

/bin/bash: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Yaseen, я не собираюсь с нуля, но другим образом, поэтому я не могу выполнить ./build.sh в моем Dockerfile, потому что bash или sh по умолчанию не установлено

0 голосов
/ 05 апреля 2020

Это потому, что вы пытаетесь использовать динамически c -компилированный bash in in docker без поддержки glibc.

TL; DR

  • . .. либо используйте bash-static вместо classi c bash Вы можете загрузить или запустить ./build.sh
  • или добавьте bash для alpine: добавьте эту строку в Dockerfile: RUN apk add --no-cache bash

Alpine - это musl -дистро дистрибутив

Многие docker изображения построены с alpine в качестве базового изображения: alpine (обычно) маленький и быстрый:

Вот размеры изображений популярных операционных систем.

The difference in image size источник: Разбивка операционных систем Dockerhub

Разница в размере изображения поразительна: диапазон простирается от BusyBox с 1 МБ до Fedora с 230 МБ. Интересно наблюдать кластеризацию. Alpine и BusyBox имеют небольшой вес и составляют около 0 МБ, тогда как средние весы, такие как Debian и Ubuntu, составляют около 100 МБ, а самые крупные - такие тяжеловесы, как CentOS и Oracle Linux, увеличившись на 200 МБ.

musl не содержит libtinfo

Подробнее о разнице между glibc и musl Функциональные отличия от glib c

PS вы можете запустить bash-static даже в пустом контейнере из scratch

FROM scratch
ADD bash
ENTRYPOINT ['/bash']

Возможно, вы сейчас можете добавить busybox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...