Если вы проверите свое базовое изображение оно с нуля.
FROM scratch
EXPOSE 8080 8081 8082 8083
COPY hotrod-linux /go/bin/
ENTRYPOINT ["/go/bin/hotrod-linux"]
CMD ["all"]
Так что Bash, ash нет, так как изображение с нуля, так чтобудет только котнэйн hotrod-linux
.
Для получения sh или bash в таких случаях вам нужно использовать многоэтапный Dockerfile, вы можете использовать базовый образ в Dockerfile, а затем копировать двоичные файлы из базового образа в многоэтапный в Dockerfile. Здесь вы идете
FROM jaegertracing/example-hotrod:latest as base
FROM alpine
COPY --from=base /go/bin/hotrod-linux /go/bin/hotrod-linux
ENTRYPOINT ["/go/bin/hotrod-linux"]
CMD ["all"]
, так что теперь вы можете собирать и тестировать, и вы сможете запускать команды внутри контейнера с помощью docker exec, вот пример
docker build -t myimage .
docker run -dit --name test myimage
#now run
docker exec -it test ash