2016-06-04 4 views
5

Я создаю изображение с другого изображения, которое задает конкретную точку входа. Однако я хочу, чтобы мое изображение имело значение по умолчанию. Как сбросить ENTRYPOINT?По умолчанию Docker entrypoint

Я попробовал следующее Dockerfile:

FROM some-image 
ENTRYPOINT ["/bin/sh", "-c"] 

К сожалению, это не работает, как точки входа по умолчанию, как это нужно команда котироваться.

docker run myimage ls -l/ # "-l /" arguments are ignored 
file1 file2 file3    # files in current working directory 

docker run myimage "ls -l /" # works correctly 

Как использовать команды без цитирования?

+0

см. Справку по сбросу точки входа '$ docker run --help | grep entrypoint' показывает '--entrypoint Перезаписать стандартную ENTRYPOINT изображения' – user2915097

+0

Мне нужно сделать это в файле Dockerfile –

ответ

18

Чтобы отключить существующий ENTRYPOINT, установите пустой массив в вашем файле Docker

ENTRYPOINT [] 

Тогда ваши аргументы docker run будет EXEC как обычно.

Причина, по которой ваш ENTRYPOINT ["/bin/sh", "-c"] требует цитируемых строк, заключается в том, что без котировок аргументы ls передаются вместо sh.

Некотируемые приводит множество аргументов направляется sh

"/bin/sh", "-c", "ls", "-l", "/" 

Цитирование позволяет полную команду (sh -c), который будет передан sh в качестве одного из аргументов.

"/bin/sh", "-c", "ls -l /" 
Смежные вопросы