Я получаю файл tar.gz
, используя wget
, и распаковываю его, используя tar -xzf
. Если я запускаю команду tar
из запущенного контейнера, она успешно распаковывается и сохраняется как init
, в котором я могу затем запустить службу с ./init
.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую ту же самую команду tar
из инструкции RUN
в Dockerfile
, я всегда получаю ту же ошибку, когда docker build .
получает доступ к любой следующей инструкции после RUN tar -xzf
команда.
Вот ошибка, которую я получаю:
OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown
А вот мой Dockerfile для тестирования:
FROM amazonlinux:2
RUN yum install -y wget tar gzip
wget https://github.com/just-containers/s6-overlay/releases/download/v1.19.1.1/s6-overlay-amd64.tar.gz
RUN tar -xzf s6-overlay-amd64.tar.gz
RUN echo "test"
Примечание: Если я сделаю RUN tar -xzf
последней инструкцией в Dockerfile
, она будет успешно построена, но попытка запустить образ в контейнере приведет к той же ошибке.
Дополнительная информация по устранению неисправностей:
Изнутри контейнера я запустил which gzip
, чтобы убедиться, что gzip используется с правильного пути (/usr/bin/gzip
), и я также запустил file https://github.com/just-containers/s6-overlay/releases/download/v1.19.1.1/s6-overlay-amd64.tar.gz
, который выдал следующий вывод к концу:
Length: 1713081 (1.6M) [application/octet-stream]
Насколько мне известно, octet-stream
просто означает, что файл является двоичным файлом, и расширение должно быть достаточно, чтобы сказать мне, что это gzip
файл.
Я знаю, что этот файл tar.gz
успешно распаковывается в другой работающий Dockerfile, собранный FROM alpine:3.6
: https://hub.docker.com/r/webcenter/activemq/~/dockerfile/
Я пробовал команду tar
, используемую в указанном Dockerfile
, и всегда получаю одну и ту же ошибку.