@nurzhannogerbek

Как исправить проблему docker: Error response from daemon: oci runtime error: container_linux.go?

Здравствуйте! Помогите исправить проблему.

Есть следующий Dockerfile:
FROM golang:1.11

RUN mkdir /app

WORKDIR /app

ADD . $SRC_DIR

EXPOSE 8000

ENTRYPOINT ["./service"]


C этим Dockerfile-ом я успешно создаю образ (image), но при попытке создать контейнер выдает ошибку:
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"./service\": permission denied".


Для создания docker контейнера использую команду:
sudo docker run --name service_container -d -p 8000:8000 service_image


К слову файл service является скомпилированным бинарным файлом Golang приложения. Перед тем как создать контейнер или образ я сделал этот бинарный файл исполняемым с помощью команды:
sudo chmod 775 service

Что я забыл учесть?
  • Вопрос задан
  • 10581 просмотр
Решения вопроса 1
@ghostiam
На Go писатель, серверов пинатель.
Возможно права не передались при добавлении файла в контейнер, попробуйте добавить после добавления файлов:
RUN chmod +x ./service

Но я не совсем понимаю, зачем в данном случае нужен образ golang:1.11, если ./service уже является скомпилированным бинарным файлом.
Если это так, то можно облегчить образ, использовав scratch или alpine как базовый образ:
FROM alpine

ADD ./service /
RUN chmod +x /service

EXPOSE 8000
ENTRYPOINT ["./service"]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abmanimenja
Образ FROM GOLANG нужен только для компиляции, не для исполнения.
Вы тащите лишнее с собой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы