2016-03-30 74 views
1

我在一個正在運行的docker容器中編輯了一個文件並重新啓動了它,不幸的是,我最後的編輯不正確。所以每次我啓動容器時:如何編輯退出Docker的文件?

docker start <containerId> 

它總是立即退出。

現在,我甚至不能修改我的編輯回來,因爲

docker exec -it <containerId> bash 

只能在正在運行的泊塢窗運行。

問題是我該如何改變它並重新啓動容器?或者我不得不放棄它,並從現有的圖像開始一個新的容器?

+1

你不能,你需要從一個新的容器開始 – tpbowden

+0

你*可以*,但可能*不應該*除非你真的知道它是你想要做的。 (見下) – ThatsNinja

回答

2

您沒有提供任何關於您的容器用途或您修改的細節。從概念上講,你可以創建一個需要在你的文件系統和mount that file into the container as a volume的地方進行修改,當您啓動它,如文件:

docker run -it -v /Users/<path_to_file>:<container_path_to_file> <container> 

Hovever,這是不好的形式,爲你的容器在那個失去便攜性沒有committing a new image的點。

理想情況下,需要在Docker容器內進行的更改將在Dockerfile中進行,並重新構建容器圖像。這樣,您的初始工作容器狀態就會在您的Dockerfile代碼中表示,從而使您的配置可重複,可移植且不可變。

+0

是的,你是對的。我只是覺得改變一個配置並重建一張圖片顯得很慢。我想查看更改是否有效,因此我直接在容器內編輯並查看調試結果。 – xidui

+0

當然,我認爲可以這樣做的最佳方式是使用卷裝,如上所述。如果您已經毀壞了現有容器映像中的文件,那麼使用該技術將錯誤的文件替換爲正常的文件將至少讓您進入容器。然後,您可以通過在容器外編輯文件來測試更改,而不必擔心自己會鎖定自己。 – ThatsNinja