Docker邁入雲(DockerHub)+端(Docker引擎)時代

2020-12-06 CSDN技術社區

編者按:本周對於開源應用引擎Docker來說是一個Big week,重磅新聞不斷:2014年6月9號,Docker社區正式發布了Docker 1.0,商業公司Docker Inc.同時宣布提供企業級服務支持Docker的大規模商用;同一天,第一屆Docker技術大會在San Francisco高調開幕,預定500人的會場有超過900多人報名,贊助商包括IBM、Redhat、Rackspace等IT巨頭;6月10,谷歌宣布與Docker的全新整合方式,涉及的雲服務包括Google App Engine和Google Compute Engine,國內各大技術媒體大規模轉載相關新聞。中國社區之前發表過OpenStack對Docker支持的思路,本次分析下Docker 新發布的 雲+端 開放平臺戰略。

Docker簡介和快速發展

開源項目Docker於2013年3月啟動,是由PaaS 提供商 dotCloud 開源的一個基於 LXC 的高級容器引擎,原始碼託管在 Github 上,基於谷歌發布的開源程式語言 Go。Docker讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到主流的 Linux 機器上。容器是完全使用沙箱機制,相互之間不會有任何接口(類似iPhone 的 app),性能開銷很低,可以很容易地在機器和數據中心中運行。它出現的意義可以與貨櫃的發明相比,貨櫃將貨運目標標準化,Docker 將應用程式標準化。Docker 誕生之前,程式設計師在伺服器端部署應用程式的步驟如下:安裝→配置→運行。與傳統部署模式不同,運用 Docker,程式設計師在伺服器端部署應用程式的步驟如下:複製→運行。


在短短一年多時間內,Docker已經發展為GitHub上的發展最快的開源組織之一,目前總共有200多萬次下載, 460多個開發人員貢獻了超過8000次代碼提交,有14000多個利用Docker引擎打包的應用。Docker背後的商業公司也發展迅速:DotCloud公司2013年10月改名為Docker Inc,轉型專注於Docker引擎和Docker生態系統;2014年1月獲得1500萬美元高額B輪融資,由著名的投資公司 Greylock Partners 領投,包括 Insight Venture Partners 參與以及原有投資者 Benchmark Capital 和 Trinity Ventures跟投,參與此輪投資的還有 Yahoo 的聯合創始人楊致遠(Jerry Yang)。Docker深受網際網路巨頭髮PaaS創業公司青睞,國內的百度在大規模實踐Docker,Google 的 Compute Engine 也支持 docker 在其之上運行,Redhat也積極地在RHEL中集成對Docker的支持。

Docker 1.0發布

Docker 1.0的發布和谷歌、Rackspace等的實踐標誌著Docker向正式大規模生產系統中的應用方面邁出了艱巨的一步。Docker的官方博客談到:「當許多機構忽視掉我們「不要在生產環境中運行」的警告愉快地使用Docker時,其他人則在實際部署生產環境前一直等待Docker產品成熟度達到一定水平,1.0 版本的發布表明在質量、功能完整、向後兼容和 API 穩定性方面已達到企業級標準;另外,我們為實際生產提供了一套全面的解決方案,包括完善的文檔、培訓項目、專業服務、以及企業級支持。」

Docker的開放平臺戰略,邁入雲+端時代

除了發布正式的1.0版本,Docker公司也正式宣布了Docker引擎+Docker Hub的開放平臺計劃,邁入雲(Docker Hub雲應用商店和分發平臺)+端(將應用發布到數據中心、公有雲等運行Docker引擎的伺服器平臺上)。這一裡程碑意味著 Docker 自身已經轉變為一個分發應用的開放平臺,它由 Docker 引擎、容器運行時、打包工具,以及 Docker Hub 組成。


Docker宣布的開放平臺包括如下幾部分:

PLATFORM= Docker Engine + Docker Hub +APIs + Ecosystem

Docker Engine可以自動化地部署應用到可移植的的容器中,這些容器獨立於硬體、語言、框架、打包系統。一個標準的Docker容器包含一個軟體組件及其所有的依賴 ——二進位文件,庫,配置文件,腳本等等。Docker擴展了LXC,使用高層的API,提供輕量虛擬化解決方案來實現進程間隔離。可以運行在任何支持 cgroups跟AUFS 的 64位Linux內核上。Docker容器可以封裝任何有效負載,幾乎可以在任何伺服器之間進行一致性運行。換句話說,開發者構建的應用只需一次構建即可多平臺運行。運營人員只需配置他們的服務,即可運行所有的應用。


Docker Hub

Docker Hub提供API和雲服務來發布基於Docker的應用程式。


下圖演示了Docker應用程式的生命周期。在本地基於Docker引擎打包應用程式,然後用DockerHub雲服務將程序(貨櫃)放到DockerHub,希望運行此應用的平臺比如GoogleAppEngine再去下載和運行。


Docker應用商店(Official Repositories)

應用商店是對之前DockerHub Registry的商業化,目前已經有14000多個基於Docker的應用程式package,包含最流行的13個應用-CentOS, MongoDB, MySQL, Nginx, Redis, Ubuntu, and WordPress 等等。應用商店將開放給合作夥伴共建生態體系,裡面包含免費的應用和收費的應用。


Docker 的蓬勃發展和新戰略將對於伺服器端(雲)應用部署帶來深遠影響

在6月10號的一個重要會議上,谷歌對Docker給予了相當大支持。在該公司看來,Docker是一個足以改變人們創建軟體方式的東西,它能讓任何程序開發人員更輕鬆地、即刻地體會到海量計算性能的優勢。Google 去年 12 月 2 日宣布,Google Cloud Platform 開始支持 Docker,Google Compute Engine 此前只支持兩種 Linux 部署方案 Debian、Centos。Google 為全球用戶提供網際網路服務,需要在分布在全球各地的伺服器上部署相關應用程式。傳統的部署模式下,Google 工程師需要在每一臺伺服器上進行相當複雜的操作才能夠完成部署。如果使用 Docker,工程師在全球各地伺服器上部署應用的過程將變得非常簡單,只需要將應用打包、複製、傳送、粘貼即可完成部署。

谷歌著名的工程師,前加利福尼亞大學伯克利分校教授、分布式系統專家,埃裡克·布魯爾(Eric Brewer)表示:「谷歌和Docker是能天然融合的。我們對應用程式未來該如何開發有著共同的認識。」布魯爾稱,Docker複製了谷歌在其數據中心裡已執行多年的一些東西,即通過一種方法讓成百上千的電腦如一臺巨型電腦般運轉。布魯爾相信,這種架構代表了網絡軟體開發的未來。來自網易科技的報導稱,「貨櫃化思維」被運用在軟體「運輸」上,Docker可以看作是用代碼編寫出來的國際貨櫃,它可以把任何應用及相關依賴項打包成一個輕量、可移植、自包涵式的容器。

參考資料:

http://blog.docker.com/2014/06/its-here-docker-1-0/

http://tech2ipo.com/66992

http://cloud.yesky.com/166/37626166.shtml

http://www.csdn.net/article/2014-06-10/2820145

關於Docker更多內容,請參考如下相關文章:

OpenStack將提供對Docker的支持
Docker公司:dotCloud轉向一體化容器技術
Docker能夠運行任何應用的「PaaS」雲

原文連結:Docker1.0發布—邁入雲(DockerHub應用分發平臺)端(Docker引擎)時代(責編/周小璐)

如您需要了解更多Docker相關的資訊或是技術文檔可訪問Docker技術社區;如您有更多的疑問請在Dcoker技術論壇提出,稍後會有專家進行答疑。

相關焦點

  • Docker 引擎概述
    Docker Engine 實際上是一個客戶端伺服器(client-server)應用:一個在伺服器上長期運行的被稱為 dockerd 的進程。一個指定結構的 APIs,這個 API 被用來與 Docker 守護進程進行通信。
  • Docker & Singularity
    自從微軟更新了WSL2(雖然我一直在用WSL),但是發現docker只能在WSL2下使用,又是被需求更新。於是上網查了下window 家庭版的更新方法。打個補丁就好(可以參考該連結https://www.jianshu.com/p/a20c2d58eaac)。
  • 雲計算核心技術Docker教程: Docker 容器連接
    下面我們來實現通過埠連接到一個 docker 容器。我們創建了一個 python 應用的容器。命令如下:# docker run -d -P training/webapp python app.py另外,我們可以指定容器綁定的網絡地址,比如綁定 127.0.0.1。
  • Docker v1.13.0 正式版發布,應用容器引擎
    可通過 docker plugin rm 命令卸載插件。Top 10 新增功能正式支持服務棧: docker stack正式支持插件:docker plugin添加在 Swarm 集群環境下對密碼、密鑰管理的 secret 管理服務:docker secret增加 docker system 命令
  • 【最新版】Docker實戰總結
    Docker運維流程圖 Docker配置管理 Docker後續問題 Docker報錯解決 正文 一、 Docker簡介 Docker是一個開源的應用容器引擎
  • 雲計算核心技術Docker教程:Docker Compose的restart和rm命令詳解
    Docker-Compose restart命令可以重新啟動所有已停止並正在運行的服務,Docker-Compose rm命令可以刪除已經停止的容器,如果服務在運行,需要先docker-compose stop 停止容器。
  • 雲計算核心技術Docker教程:利用Dockerfile來創建鏡像
    在docker使用過程中,我們可以從已經創建的容器中更新鏡像,並且commit提交這個鏡像來創建新的鏡像,使用docker commit 來擴展一個鏡像比較簡單,但是不方便在一個團隊中分享此時我們可以使用 Dockerfile 指令來創建一個新的鏡像。
  • 微服務部署到docker中
    可以看到項目根目錄下新增一個名為Dockerfile的文件6.通過Xftp將項目從Windows下的磁碟位置拷貝到Linux的root目錄下二、Linux下通過Docker構建應用1.通過Xshell連接上Linux虛擬機,進入到項目目錄下,然後通過docker
  • 雲計算核心技術Docker教程:Docker Compose的pull和push命令詳解
    Docker-Compose pull命令可以拉取docker-compose.yml或者docker-stack.yml文件中定義的服務關聯的鏡像,Docker-Compose push命令可以將服務鏡像推送到registry/repository中。
  • Docker是什麼?有什麼用途?及理論知識詳細說明
    運維生成環境中:docker化。 發布服務不用擔心伺服器的運行環境,所有的伺服器都是自動分配docker,自動部署,自動安裝,自動運行 再不用擔心其他服務引擎的磁碟問題,cpu問題,系統問題了 資源利用更出色 自動遷移,可以製作鏡像,遷移使用自定義的鏡像即可遷移,不會出現什麼問題 管理更加方便了 為什麼docker越來越受歡迎 容器化越來越受歡迎
  • 將Docker與pipeline一起使用
    Jenkinsfile(聲明性管道)pipeline { agent none stages { stage('Back-end') { agent { docker { image 'maven:3-alpine' } } steps { sh 'mvn --version' } } stage('Front-end') { agent { docker { image
  • Docker 創建你自己的橋接網絡
    Docker 引擎能夠原生支持橋接網絡(bridge networks)和覆蓋網絡(overlay networks)。 橋接網絡被限制用於一個獨立主機運行的 Docker 引擎。覆蓋網絡能夠包含有多個主機,這個有更多的高級特性。
  • Docker不再是唯一的選擇
    Docker並不是唯一的容器化工具,可能還有更好的選擇……在容器的早期時代(其實更像是4年前),Docker是容器遊戲中唯一的玩家。但現在情況已經不一樣了,Docker不再是唯一的一個,而只是其中一個容器引擎而已。
  • 使用Jenkins、Docker 構建部署 Serverless 應用
    和 docker 命令掛載到容器中,啟動 jenkins 命令如下: 注意:由於容器內 Jenkins 服務是由 jenkins 用戶啟動的,它無法訪問 /var/run/docker.sock,因此我們需要更改這個文件的權限。
  • 雲計算核心技術Docker教程:Compose使用
    2.使用 docker-compose.yml 定義構成應用程式的服務,這樣它們可以在隔離環境中一起運行。3.最後,執行 docker-compose up 命令來啟動並運行整個應用程式。運行以下命令以下載 Docker Compose 的當前穩定版本:$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • CoreOS實踐指南(七):Docker容器管理服務
    操作 docker 的方式與 systemctl、etcdctl 類似,需要由一個二級命令共同組成一個完整的命令。通過 docker pull 命令可以指定的網絡地址拉取鏡像到本地(如果指定的是名稱而不是網絡地址,則會在docker官方的鏡像倉庫裡面搜索,比如下面的兩個例子)。
  • SpringBoot+GitLab+Docker+Jenkins實現持續集成下
    --Dockerfile文件所在目錄--> <dockerDirectory> ${project.basedir}/src/main/resources </dockerDirectory
  • Docker 容器 9 類 48 個常見故障的處理和使用規範 | 周末送資料
    Docker是一種相對使用較簡單的容器,我們可以通過以下幾種方式獲取信息:1、通過docker run執行命令,或許返回信息2、通過docker logs 去獲取日誌,做有針對性的篩選3、通過systemctl status docker查看docker服務狀態4、通過journalctl -u docker.service
  • 雲計算核心技術Docker教程:Dockerfile文件HEALTHCHECK命令詳解
    在沒有 HEALTHCHECK 指令前,Docker 引擎只可以通過容器內主進程是否退出來判斷容器是否狀態異常。很多情況下這沒問題,但是如果程序進入死鎖狀態,或者死循環狀態,應用進程並不退出,但是該容器已經無法提供服務了。在 1.12 以前,Docker 不會檢測到容器的這種狀態,從而不會重新調度,導致可能會有部分容器已經無法提供服務了卻還在接受用戶請求。
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    難點在於將網絡攝像頭流發送到 docker 容器並恢復輸出流以使用 X11 伺服器顯示它。將視頻流發送到容器Linux 系統可以在/ dev /目錄中找到攝像頭設備,並可以將其作為文件進行操作。通常筆記本電腦攝像頭是「0」設備。