三個技巧,將Docker映象體積減小90

2021-09-17 06:38:54 字數 1105 閱讀 5181

在構建docker容器時,應該盡量想辦法獲得體積更小的映象,因為傳輸和部署體積較小的映象速度更快。

\\ 但run語句總是會建立乙個新層,而且在生成映象之前還需要使用很多中間檔案,在這種情況下,該如何獲得體積更小的映象呢?

\\ 你可能已經注意到了,大多數dockerfiles都使用了一些奇怪的技巧:

\\

\from ubuntu\run apt-get update \u0026amp;\u0026amp; apt-get install vim
\\

為什麼使用\u0026amp;\u0026amp;?而不是使用兩個run語句代替呢?比如:

\\

\from ubuntu\run apt-get update\run apt-get install vim
\\

從docker 1.10開始,copy、add和run語句會向映象中新增新層。前面的示例建立了兩個層而不是乙個。

\\ 映象的層就像git的提交(commit)一樣。

\\ docker的層用於儲存映象的上一版本和當前版本之間的差異。就像git的提交一樣,如果你與其他儲存庫或映象共享它們,就會很方便。

\\ 但額外的層並不是沒有代價的。

\\ 層仍然會占用空間,你擁有的層越多,最終的映象就越大。git儲存庫在這方面也是類似的,儲存庫的大小隨著層數的增加而增加,因為git必須儲存提交之間的所有變更。

\\ 過去,將多個run語句組合在一行命令中或許是一種很好的做法,就像上面的第乙個例子那樣,但在現在看來,這樣做並不妥。

\\\\

當git儲存庫變大時,你可以選擇將歷史提交記錄壓縮為單個提交。

\\ 事實證明,在docker中也可以使用多階段構建達到類似的目的。

\\ 在這個示例中,你將構建乙個node.js容器。

\\ 讓我們從index.js開始:

\\\\

和package.json:

\\

\{\  \"name\": \"hello-world\

三個技巧,將Docker映象體積減小90

在構建docker容器時,應該盡量想辦法獲得體積更小的映象,因為傳輸和部署體積較小的映象速度更快。但run語句總是會建立乙個新層,而且在生成映象之前還需要使用很多中間檔案,在這種情況下,該如何獲得體積更小的映象呢?你可能已經注意到了,大多數dockerfiles都使用了一些奇怪的技巧 from ub...

css 的三個技巧

1 等比例縮小 imgbox imgbox img2 多行文字省略 單行 text 多行 text關於display webkit box 的講解 3 強制性換行 一般元素預設是white space normal 自動換行 但是如果是一些沒有空格的數字,字元,字母的話white space nor...

三個提公升網頁效能技巧

1 display屬性設定 先將元素設為display none 需要1次重排和重繪 然後對這個節點進行100次操作,最後再恢復顯示 需要1次重排和重繪 這樣一來,你就用兩次重新渲染,取代了可能高達100次的重新渲染。只在必要的時候,才將元素的display屬性為可見,因為不可見的元素不影響重排和重...