2015-09-13 3 views
7

Я хочу передать параметр в докер CMD. Например, если содержимое Dockerfile являютсяАргументы командной строки для Docker CMD

FROM ubuntu:15.04 
CMD ["/bin/bash", "-c", "cat", "$1"] 

Тогда я хочу, чтобы запустить следующим образом:

docker build -t cat_a_file . 
docker run -v `pwd`:/data cat_a_file /data/Dockerfile 

Я хотел содержимое Dockerfile быть выведен на экран. Но вместо этого, Docker считает, что /data/Dockerfile скрипт, который должен переопределить CMD, давая ошибку

Error response from daemon: Cannot start container 7cfca4: 
[8] System error: exec: "/data/Dockerfile": permission denied 

Как это можно избежать?

ответ

9

Используйте ENTRYPOINT для таких вещей. Любые параметры CMD добавляются к заданному ENTRYPOINT.

Итак, если вы обновляете Dockerfile к:

FROM ubuntu:15.04 
ENTRYPOINT ["/bin/bash", "-c", "cat"] 

Вещи должны работать, как вы хотите.

Кроме того, как вам не нужны $1, вы должны быть в состоянии изменить его на:

Я не тестировал все это, так что дайте мне знать, если он не работает ,

+0

Я только что протестировал его, и он действительно работает. Спасибо. – user14717

+0

Просто чтобы мы могли создавать более сложные скрипты, каков правильный способ использования аргумента '$ 1'? – user14717

+0

Вероятно, лучше всего использовать переменные среды в этих случаях. Вы не можете использовать '$ 1' и т. Д. –

Смежные вопросы