最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

谷歌技術人員解決Docker鏡像體積太大問題的方法

 更新時間:2017年11月20日 15:53:48   投稿:mengwei  
這篇文章主要介紹了谷歌技術人員解決Docker鏡像體積太大問題的方法,涉及虛擬機,谷歌docker鏡像構建實踐及構建工具bazel的介紹等相關內容,具有一定參考價值,需要的朋友可以了解下。

虛擬機的問題

最初,大家都使用虛擬機作為軟件的運行環(huán)境,對外提供服務。為了在虛擬機上運行你的 Service,你不得不運行一大堆程序:

系統(tǒng)進程
定時任務
SSH
安裝 Agent
安裝 Bash
安裝一大堆 libs

其實,你僅僅只是想讓你的 Service運行起來,但你不得不維護一個 40GB的虛擬機。

然后你開始試用 Docker

開始試用 Docker,你毫不猶豫選擇了和之前虛擬機一樣的鏡像:Ubuntu 1404,將之前的虛機的內容復制到了 Docker鏡像,安裝了一堆軟件,最后發(fā)現(xiàn)你的 Docker鏡像有 8GB。

谷歌的 Docker鏡像構建實踐

找到最小的基礎鏡像

Alpine Linux是基于 musl和 BusyBox的操作系統(tǒng),目的是為了為用戶提供更高效的資源使用效率。它的特性是體積小,最小的 Alpine Linux體積可以只有 5MB。谷歌某些團隊使用 Alpine Linux作為 Docker Build的基礎鏡像。

目的:僅僅為了運行 Service

谷歌認為,為了運行一個 Service,并不需要將那些無關聯(lián)的包、程序打包到容器里,換句話說,Docker鏡像里只留下需要用到的,其他的都刪除,從而得到一個最小的鏡像。這需要考慮以下幾點:

1、程序編譯后的二進制文件(從 Artifactory獲?。?/p>

2、程序的所有依賴(從 Artifactory獲取)

3、程序語言的運行時(libc,JRE,node,…)

4、任何程序和 Kernel之間的中間件

其實這一切的信息,構建工具都已經(jīng)知道。

谷歌的構建工具 Bazel

介紹 Bazel之前,先介紹下谷歌的開發(fā)模式,對于服務器端代碼庫,谷歌的開發(fā)流程如下:

1、所有的服務器端代碼庫都在一個巨大的版本控制系統(tǒng)里

2、每個人都用 Bazel構建軟件

3、不同的組負責源碼樹的不同部分,所有的組件都是作為 BUILD目標來用

4、分支主要是用來管理發(fā)布,所以每個人都在最新版本上開發(fā)軟件

Bazel(https://bazel.build/)是 Google內部用來構建自己的服務器端軟件的工具。目前變成谷歌公司貢獻的一個開源項目,目的是幫助開發(fā)者將軟件的構建和測試變得更快、更可靠。

從上圖可以看到,Bazel有 WORDSPACE的概念,WORDSPACE文件用來準備 Docker鏡像構建所依賴的所有材料和來源。BUILD文件用來告訴 Bazel這個鏡像應該使用什么命令進行構建,以及如何構建、如何測試。

使用 Bazel的聲明式語言: WORKSPACE和 BUILD,開發(fā)者可以用文件描述整個構建和部署的環(huán)境。谷歌使用 Bazel進行 Docker的構建已經(jīng)很多年,它為谷歌帶來以下收益:

1、支持跨平臺構建,分布式緩存,優(yōu)化依賴解析,并行構建,增量構建。

2、支持多語言(Java, C++, Android, iOS, Go等等)。

3、跨平臺。

4、水平擴展和自定義擴展。

Bazel是以下理念的奠基石:由于 Bazel需要所有的依賴都被完整地指定,我們可以預測改動影響了哪些程序和測試,并在提交前執(zhí)行他們。

谷歌提供的 Distroless鏡像構建文件

Distroless (https://github.com/GoogleCloudPlatform/distroless)是谷歌內部使用的鏡像構建文件,包括 Java、Node、Python等鏡像構建文件,Distroless僅僅只包含運行服務所需要的最小鏡像,不包含包管理工具、shell命令行等其他功能。

為什么你需要這些鏡像?這些鏡像是谷歌和其他大公司的最佳實踐的產(chǎn)物,經(jīng)過了漏洞掃描,鏡像會持續(xù)更新,保持安全性。

如何使用?Distroless提供的構建鏡像的 BUILD文件,通過 Bazel可以直接進行構建。

谷歌為大家介紹了內部如何解決鏡像過大的問題,以及進行大規(guī)模并發(fā)構建、測試所用到的構建工具 Bazel,并且開源了 Docker鏡像構建文件 Distroless項目。如果你認為你的鏡像也存在體積太大的問題,可以參考谷歌的實踐,體驗他們的工具。

總結

以上就是本文關于谷歌技術人員解決Docker鏡像體積太大問題的方法的全部內容,希望對大家有所幫助。感興趣的朋友可以可以繼續(xù)參閱本站:

Docker探索namespace詳解

詳解Docker使用Linux iptables 和 Interfaces管理容器網(wǎng)絡

淺談Docker安全機制內核安全與容器之間的網(wǎng)絡安全

如有不足之處,歡迎留言指出。

相關文章

  • Docker 的健康檢測機制

    Docker 的健康檢測機制

    這篇文章主要介紹了Docker 的健康檢測機制。即檢驗進程是否存活,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 使用Docker搭建MySQL數(shù)據(jù)庫服務的方法詳解

    使用Docker搭建MySQL數(shù)據(jù)庫服務的方法詳解

    在現(xiàn)代應用程序開發(fā)中,使用數(shù)據(jù)庫是必不可少的,文將介紹如何使用Docker搭建MySQL數(shù)據(jù)庫服務,讓你在本地環(huán)境中快速部署一個MySQL實例,感興趣的可以了解下
    2024-03-03
  • docker保存鏡像到本地并加載本地鏡像文件詳解

    docker保存鏡像到本地并加載本地鏡像文件詳解

    平常我們下載docker鏡像會通過配置國內源來加速下載,但是有時候會有另外的需求,比如某個機器不能聯(lián)網(wǎng),我們就需要從其他機器下載,打包后,拷貝到這個機器,下面這篇文章主要給大家介紹了關于docker保存鏡像到本地并加載本地鏡像文件的相關資料,需要的朋友可以參考下
    2022-08-08
  • docker實現(xiàn)MySQL的主從復制

    docker實現(xiàn)MySQL的主從復制

    在學習項目的時候實現(xiàn)讀寫分離用到了主從復制,但是一般要實現(xiàn)的話需要虛擬機或服務器非常麻煩,但是docker可以完美解決這一問題,本文主要介紹了docker實現(xiàn)MySQL的主從復制,感興趣的可以了解一下
    2024-01-01
  • docker運行PostgreSQL數(shù)據(jù)庫維護執(zhí)行腳本備份數(shù)據(jù)庫與更新表結構的方法

    docker運行PostgreSQL數(shù)據(jù)庫維護執(zhí)行腳本備份數(shù)據(jù)庫與更新表結構的方法

    這篇文章主要介紹了docker運行PostgreSQL數(shù)據(jù)庫維護,執(zhí)行腳本備份數(shù)據(jù)庫與更新表結構,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Docker 端口映射與容器互聯(lián)的實現(xiàn)

    Docker 端口映射與容器互聯(lián)的實現(xiàn)

    Docker的端口映射和容器互聯(lián)是構建和管理微服務架構時重要的概念,本文主要介紹了Docker 端口映射與容器互聯(lián)的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • 使用 Docker 搭建 Laravel 本地環(huán)境的教程詳解

    使用 Docker 搭建 Laravel 本地環(huán)境的教程詳解

    laradock 是一個包含全功能用于 docker 的 PHP 運行環(huán)境,使用 docker-compose 方式部署,本文重點給大家介紹使用 Docker 搭建 Laravel 本地環(huán)境的方法,感興趣的朋友一起看看吧
    2017-10-10
  • Docker部署安裝Nginx的詳細過程

    Docker部署安裝Nginx的詳細過程

    Nginx 是一款高性能的 web 服務器、反向代理服務器以及電子郵件(IMAP/POP3/SMTP)代理服務器,這篇文章主要介紹了Docker部署安裝Nginx,需要的朋友可以參考下
    2024-04-04
  • Docker數(shù)據(jù)卷和掛載目錄的使用

    Docker數(shù)據(jù)卷和掛載目錄的使用

    docker?在容器中管理數(shù)據(jù)主要有兩種方式,包括數(shù)據(jù)卷和掛載主機目錄,本文主要介紹了Docker數(shù)據(jù)卷和掛載目錄的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 云原生教程之使用Docker部署webssh工具sshwifty

    云原生教程之使用Docker部署webssh工具sshwifty

    Sshwifty是一個開源的WebSSH?&?WebTelnet客戶端,下面這篇文章主要給大家介紹了關于云原生教程之使用Docker部署webssh工具sshwifty的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03

最新評論

沙坪坝区| 姜堰市| 乌鲁木齐市| 光山县| 雷山县| 奉贤区| 宝丰县| 许昌县| 南京市| 亚东县| 金门县| 彭州市| 关岭| 江源县| 丹江口市| 华容县| 阳谷县| 边坝县| 台江县| 绥江县| 芦山县| 神农架林区| 南澳县| 潮安县| 集安市| 荔浦县| 离岛区| 潞城市| 昭苏县| 南部县| 内江市| 马边| 吉林市| 阿拉善左旗| 丰镇市| 高雄县| 如皋市| 洱源县| 镇坪县| 封开县| 江达县|