我正在嘗試使用docker build
命令和適當的Dockerfile
來自動創建開發Docker鏡像。我需要在RUN
命令中運行的其中一個腳本需要用戶點擊並閱讀其許可協議。因此有兩個問題:Dockerfile中的交互命令
- 哪裏是所有
RUN
命令的輸出在Dockerfile
? - 有什麼解決方案可以與上述命令交互?現在,
docker build
命令只是被阻止,要求用戶輸入一個無限循環。
我正在嘗試使用docker build
命令和適當的Dockerfile
來自動創建開發Docker鏡像。我需要在RUN
命令中運行的其中一個腳本需要用戶點擊並閱讀其許可協議。因此有兩個問題:Dockerfile中的交互命令
RUN
命令的輸出在Dockerfile
?docker build
命令只是被阻止,要求用戶輸入一個無限循環。RUN
命令的輸出在構建期間顯示在您的終端中。 Docker構建過程完全是非交互式的,因此您必須找到某種方法來自動接受術語(幾乎每一個軟件都允許這樣做,認爲是apt-get install -y...
),或者使用一些shell嚮導來回應接受過程或任何(Expect也許?)。
你也可以在幾個步驟中完成它,首先是一個帶有指令的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
「我試圖_automate_創作......」:) – johnharris85
作爲johnharris85,使用expect – user2915097
是的,我對'apt-get'類型的應用程序使用'-y'。但這是一些商業的事情。 – ilya1725
是的,商業的東西通常真的很糟糕;)但是如果他們沒有非交互模式,我會感到驚訝:)如果不是,那麼看看Expect。 – johnharris85