У меня есть рабочий контейнер (Статус -> ВВЕРХ), и я хочу иметь возможность выполнять команду внутри контейнера докеров, если я открою консоль и сделаю, например, ls, это будет сделано на моей машине, но не в докер-контейнер. А также как это будет сделано с помощью docker-compose.
Что вам нужно, так это команда
exec
:Затем:
Это означает, что вы можете использовать это
exec
для выполнения команды в работающем контейнере. Поэтому, если вы хотите вывести список файлов и папок:Флаг
-i
должен запускать его в интерактивном режиме.Docker Compose — это инструмент для управления несколькими контейнерами. Помните, что контейнеры работают с a,
Dockerfile
и именно в этом файле вы запускаете команды для контейнера. ПримерDockerfile
:Команды выполняются с помощью
RUN
.Чтобы немного дополнить информацию, предоставленную @César, я привел следующие примеры:
1) Пример лс -а
Описание. На предыдущем изображении показано, как ls -a может выполняться внутри контейнера с именем «карты». Вы можете не только запустить команду внутри докера, но также можете передать параметры, связанные с командой, поскольку она работает изначально. При этом вы сможете увидеть каталоги, расположенные в корне операционной системы, в том числе и скрытые.
2) Пример мкдир
Описание: На предыдущем изображении вы можете видеть, как создается каталог, расположенный в корне системы, выполняемой в докере.
3) сенсорный пример
Описание. На предыдущем изображении показано, как создать файл в докере, выполнив команду touch.
4) Список команд, доступных в докере
Описание: Чтобы узнать доступные команды рассматриваемой операционной системы (например, ее дистрибутив указан как Debian), вы можете сделать ls в папку bin, расположенную в корне системы «/bin». Важно отметить, что не все команды, изначально присутствующие в операционной системе, могут выполняться внутри контейнера. Ярким примером может служить команда «cd» (сменить каталог).
5) Пример cd (команда недоступна)
Я надеюсь быть полезным! Всего наилучшего.
В случае, если вы хотите использовать docker-compose, у вас должен быть файл docker-compose.yml с конфигурацией поднимаемых контейнеров, в этом случае вы переходите по пути, где у вас есть файл docker-compose.yml и следуете следующий синтаксис: docker-compose exec, в моем случае у меня есть контейнер, который вызывает postgres , и я хочу выполнить sh , поэтому это будет выглядеть так: docker-compose exec postgres sh , вот мой docker-compose.yml: