TL; DR: вы можете использовать директиву CMD
, выполнив что-то вроде этого:
FROM parent_org/parent:1.0.0
CMD ["--special-arg"]
, однако обратите внимание, что передача дополнительных флагов docker run
, как показано ниже, перезаписать --special-arg
(поскольку CMD
предназначено для указания по умолчанию аргументов):
docker build -t child_org/child .
docker run child_org/child # would imply --special-arg
docker run child_org/child --other-arg # "--other-arg" replaces "--special-arg"
Если это не то, что вы хотели бы получить, выследует переопределить ENTRYPOINT
, как предложено ниже.
Директивы CMD и ENTRYPOINT
Чтобы получить больше информации о CMD
, а также о ENTRYPOINT
, вы можете взглянуть на таблица , участвующая в этом другом ответе SO: CMD не запускается после ENTRYPOINT в Dockerfile .
В вашем случае вы можете переопределить ENTRYPOINT
в вашем child
image (и, если необходимо, значение по умолчанию CMD
) путем адаптации child_org/child/Dockerfile
по сравнению с тем, что было определено в parent
Dockerfile.
Предполагается, что parent_org/parent/Dockerfile
выглядит следующим образом:
FROM debian:stable # for example
WORKDIR /usr/src/foo
COPY entrypoint.sh .
RUN chmod a+x entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]
CMD ["--default-arg"]
Вы можете написать child_org/child/Dockerfile
так:
FROM parent_org/parent:1.0.0
RUN […]
# Redefine the ENTRYPOINT so the --special-arg flag is always passed
ENTRYPOINT ["./entrypoint.sh", "--special-arg"]
# If need be, redefine the list of default arguments,
# as setting ENTRYPOINT resets CMD to an empty value:
CMD ["--default-arg"]