日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作為Alpine linux的超級粉絲,我在很多構建的Docker鏡像中都使用了它。生成的鏡像非常小,非常小,非常適合Dockers環境。

最近我想為一個過時的項目建立Docker圖像。但是Alpine的包管理器apk失敗了,原因讓我吃驚。

 

「容器云」Docker和Alpine的包固定問題

 

 

Docker最大的好處之一是什么?清晰的再現性:無論你在哪里運行鏡像·,或者什么時候運行圖像,結果都是一樣的。

不過,可重復性不僅在運行時很重要。這在構建圖像時也非常重要:同樣,無論何時何地構建鏡像:同樣的結果!

版本固定

為了實現一致的構建,您所依賴的依賴項必須固定到特定版本。你不能只是去安裝nodejs,你必須非常具體,比如安裝nodejs@8.10.0。

為什么?如果不確定版本號,則鏡像取決于生成時的時間點。當軟件包維護人員決定發布一個新版本時,它將在您下次重建映像時自動安裝。

Alpine Linux和版本固定

Alpine Linux確實支持兩種固定包的方法:存儲庫和包固定

Alpine Linux本身帶有一個版本號(編寫時的當前版本是3.7)。每個Alpine Linux版本都有自己的包存儲庫(包檔案存儲的地方)。

使用repository pinning,您實際上可以將包固定到所選alpinlinux版本的最新可用包版本。例如,在Alpine 3.5中,包Node.js可能是2.0,而在Alpine 3.4中是1.9。通過將存儲庫固定到Alpine 3.4,您將始終保持Node.js 1.9,因為alpine3.4是一個舊版本,不再更新。

通過包固定,您可以將包固定到各自的版本。它允許您指定所需包的版本,如版本1.2.3中的Node.js。聽起來很完美!

Alpine不保留舊包裹

不幸的是,Alpine Linux沒有保留舊的包。當我嘗試構建過時的項目時,我得到了apk的回復:

ERROR: unsatisfiable constraints:
postgresql-dev-10.3-r0:
breaks: world[postgresql-dev=10.2-r0]

我以前使用的postgresql開發版本(10.2-r0)不再可用。相反,10.3-r0已經發布,舊的包已經從存儲庫中刪除。

這是一個巨大的問題,因為它迫使您避免固定包版本,而使用存儲庫固定。

但是,在重建映像時,軟件包可能安裝在您不期望的版本中。這可能是一個真正的問題,這取決于更新包時相應包中的更改。

PyPI,npm…?

我希望它類似于PyPI和npm:不刪除任何版本,所以版本固定工作得非常好,無論您何時構建或使用您的東西。

Alpine是一個偉大的分布,特別是對碼頭工人。當然,我會繼續使用它,但你最好在以后的軟件包版本上花很多心思,并安裝單元測試來覆蓋你!

 

原文:https://medium.com/@stschindler/the-problem-with-docker-and-alpines-package-pinning-18346593e891

本文:http://jiagoushi.pro/node/849

討論:請加入知識星球【首席架構師圈】或者飛聊小組【首席架構師智庫】

分享到:
標簽:Docker
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定