Парадигма контейнера не способствует использованию таких вещей, как серверы sh. Основная концепция заключается в том, что вы размещаете только один изолированный процесс внутри контейнера, в вашем случае 'httpd'.
Другими словами, в контейнере apache не работает сервер s sh, это только хостинг процесса веб-сервера.
Вы можете использовать команду типа docker exec <container_name> <command>
, чтобы выполнить другой процесс в том же контейнере. Например:
docker exec myhttpd ls -la
, который будет перечислять содержимое настроенного рабочего каталога в контейнере.
docker exec
подключит stdout и stderr в текущем сеансе терминала к stdout и stderr контейнера и выполните свою команду в среде контейнера.
Это хорошее решение для устранения неполадок и опробования. Но ищите альтернативы, если вы хотите навсегда изменить среду вашего приложения. Например, использование Dockerfile.
Если вы предоставите больше информации о вашем сценарии использования, я с удовольствием сделаю предложение.