2 回答

TA貢獻1784條經驗 獲得超8個贊
我安裝的所有新軟件和軟件包都被清除了 - 因為它們沒有在 dockerfile 中指定
這是一個錯誤:修復它。
作為一般規則,您不應在容器的交互式 shell 中安裝軟件。正如您所注意到的,當容器退出時,您將丟失所有工作,并且由于您沒有在 Dockerfile 中寫下內容,因此您的同事或生產環境無法重現您所做的工作。
我建議采用以下工作流程:
完全不使用 Docker 構建一個可以工作的應用程序。確保所有語言級依賴項都記錄在適當的文件 (
package.json
,setup.py
,requirements.txt
) 中。您應該能夠在干凈的環境中使用源代碼樹和適當的語言運行時運行您的應用程序。編寫一個 Dockerfile 來安裝語言運行時、任何所需的主機庫依賴項和您的應用程序。生成的圖像應該是完全獨立的;你永遠不需要
docker exec
進入它來做事。當您更新應用程序時,在本地運行其測試,然后是
docker build
新映像,刪除舊容器和docker run
新容器。
如果您瀏覽 SO 碼頭工人問題,您會看到許多類似“請在問題中包含您的 Dockerfile”的評論。這是構建圖像的一種直接且可重復的方式,您現在可以與您的同事分享,或者在六個月后與您自己分享。你永遠不應該使用docker commit
:這是一個為自己設置一個非常特殊的圖像的方法,你不記得你是如何構建的,因此永遠無法更新,一旦你有一個關鍵的安全更新或你需要的新軟件,這將是一個問題安裝。
添加回答
舉報