亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

docker - 基于容器更新圖像

docker - 基于容器更新圖像

慕哥9229398 2021-08-24 19:15:41
每當我使用 docker 容器時,我發現隨著我的項目的增長,我不可避免地需要安裝新的 python 包、節點模塊和整個 api,比如 opencv。但是當我重建一個 docker 鏡像時,我安裝的所有新軟件和包都會被清除——因為它們沒有在 dockerfile 中指定。有沒有辦法用我所做的新安裝自動更新 dockerfile,或者創建一個存儲 apt-get 包的卷?
查看完整描述

2 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我安裝的所有新軟件和軟件包都被清除了 - 因為它們沒有在 dockerfile 中指定

這是一個錯誤:修復它。

作為一般規則,您不應在容器的交互式 shell 中安裝軟件。正如您所注意到的,當容器退出時,您將丟失所有工作,并且由于您沒有在 Dockerfile 中寫下內容,因此您的同事或生產環境無法重現您所做的工作。

我建議采用以下工作流程:

  1. 完全不使用 Docker 構建一個可以工作的應用程序。確保所有語言級依賴項都記錄在適當的文件 ( package.jsonsetup.pyrequirements.txt) 中。您應該能夠在干凈的環境中使用源代碼樹和適當的語言運行時運行您的應用程序。

  2. 編寫一個 Dockerfile 來安裝語言運行時、任何所需的主機庫依賴項和您的應用程序。生成的圖像應該是完全獨立的;你永遠不需要docker exec進入它來做事。

  3. 當您更新應用程序時,在本地運行其測試,然后是docker build新映像,刪除舊容器和docker run新容器。

如果您瀏覽 SO 碼頭工人問題,您會看到許多類似“請在問題中包含您的 Dockerfile”的評論。這是構建圖像的一種直接且可重復的方式,您現在可以與您的同事分享,或者在六個月后與您自己分享。你永遠不應該使用docker commit:這是一個為自己設置一個非常特殊的圖像的方法,你不記得你是如何構建的,因此永遠無法更新,一旦你有一個關鍵的安全更新或你需要的新軟件,這將是一個問題安裝。


查看完整回答
反對 回復 2021-08-24
  • 2 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號