Как получить интерактивную оболочку bash в контейнере Docker - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь подключиться к работающему контейнеру или запустить новый контейнер в интерактивном режиме с помощью оболочки bash, а не оболочки sh. Я хочу запустить:

docker exec -it <container_name> /bin/bash

или

docker run -it <container_name> <image_name>

или

docker run -it <container_name> <image_name> /bin/bash

и получить интерактивную оболочку bash.

Что Я пробовал до сих пор:

За это сообщение Я пробовал

Добавление этого в мой Dockerfile

SHELL ["/bin/bash", "-c"]

Добавление этого в мой Dockerfile

RUN ["/bin/bash", "-c", "echo I am now using bash!"]

Но каждый раз, когда я пытаюсь запустить контейнер в интерактивном режиме (docker run -it или присоединить к работающему контейнеру (docker exec -it)), я оказываюсь в оболочке sh.

Как получить интерактивную оболочку bash, которая работает внутри docker контейнера?

Обновление: минимально работающий Dockerfile

FROM ubuntu

SHELL ["/bin/bash", "-c"]

1 Ответ

2 голосов
/ 04 марта 2020

На самом деле вы запускаете интерактивный bash с такими командами, как:

docker container run -it ubuntu /bin/bash

Когда вы запускаете bash в docker контейнере, эта оболочка находится в контейнере. Поэтому у него не будет истории команд извне контейнера, эта история будет храниться в файловой системе хоста. Также не будет вашего приглашения, переменная PS1 не будет автоматически экспортирована в среду контейнера. И у вас не будет вашей .bashrc конфигурации с вашего хоста, поскольку она не находится внутри контейнера. Вместо этого вы получаете bash оболочку из коробки с минимального хоста Ubuntu.

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