讀了Dockerfile文檔上ENTRYPOINT
沒有發現,我有試圖重寫我的命令之一的一個問題:EXEC使用Dockerfile入口點
它今天運行,沒有問題:
# Startup
ENTRYPOINT ["/etc/init.d/hook", "/run/apache2/apache2.pid", "/etc/init.d/apache2 start"]
據各種消息來源,我應該用叉高管我掛鉤的過程,所以我有簡單的改變入口點到
ENTRYPOINT ["exec", "/etc/init.d/hook", "/run/apache2/apache2.pid", "/etc/init.d/apache2 start"]
但現在我收到以下錯誤:
container_linux.go:247: starting container process caused "exec: \"exec\": executable file not found in $PATH"
爲什麼exec
不會被發現?這不是一個bash內建的嗎?
如果我附於至容器,我可以運行沒有問題
$ docker exec -it $(docker ps | grep imagename | awk '{print $1}') bash
[email protected]:/# exec echo hi
hi
如何我在ENTRYPOINT
指令中使用exec
EXEC?
編輯
這裏是一個Dockerfile再現錯誤
FROM ubuntu:16.10
ENTRYPOINT ["exec", "echo", "hi"]
這是因爲第一個表單被傳遞給一個shell,而第二個表單不是。所以'exec'被發現,因爲它是一個shell內建的。在第二種形式中,你調用'exec'並且沒有shell來提供它,它不存在。 –