2016-11-28 259 views
6

我正在嘗試使用docker build命令和適當的Dockerfile來自動創建開發Docker鏡像。我需要在RUN命令中運行的其中一個腳本需要用戶點擊並閱讀其許可協議。因此有兩個問題:Dockerfile中的交互命令

  1. 哪裏是所有RUN命令的輸出在Dockerfile
  2. 有什麼解決方案可以與上述命令交互?現在,docker build命令只是被阻止,要求用戶輸入一個無限循環。

回答

4

RUN命令的輸出在構建期間顯示在您的終端中。 Docker構建過程完全是非交互式的,因此您必須找到某種方法來自動接受術語(幾乎每一個軟件都允許這樣做,認爲是apt-get install -y...),或者使用一些shell嚮導來回應接受過程或任何(Expect也許?)。

+0

是的,我對'apt-get'類型的應用程序使用'-y'。但這是一些商業的事情。 – ilya1725

+3

是的,商業的東西通常真的很糟糕;)但是如果他們沒有非交互模式,我會感到驚訝:)如果不是,那麼看看Expect。 – johnharris85

-1

你也可以在幾個步驟中完成它,首先是一個帶有指令的Dockerfile,直到交互部分之前。然後

docker build -t image1 .

現在只需

docker run -it --name image2 image1 /bin/bash

你有內部的殼,你可以做你的交互式命令,然後像做

docker commit image2 myuser/myimage:2.1

的文檔的docker commit

https://docs.docker.com/engine/reference/commandline/commit/

,你可能需要指定一個新的CMD或入口點,如DOC表示

提交新的CMD容器並公開說明

例如用酒一些搬運工圖像做在幾個步驟中,安裝wine,然後啓動並配置在wine中啓動的軟件,然後docker commit

+2

「我試圖_automate_創作......」:) – johnharris85

+0

作爲johnharris85,使用expect – user2915097