Docker 傳奇之 dotCloud

2020-12-27 開源中國

2014-12-11   MacTalk By 池建強 

                   

2010年,幾個大鬍子年輕人在舊金山成立了一家做 PaaS 平臺的公司,起名為「dotCloud」,這個名字讓我想起了微軟的「DotNet」。

dotCloud 主要是基於 PaaS 平臺為開發者或開發商提供技術服務。什麼是 PaaS 呢?PaaS 的全稱是 Platform as a Service,也就是平臺即服務,這個概念在2010年熱的一塌糊塗,直到現在也沒涼下來。舉個例子來說,傳統的軟體產品開發一般是這樣的:

1、確定產品定位和需求,確定首次迭代的範圍。
2、製作界面原型。
3、技術選型,然後根據技術選型為每個開發者搭建開發環境和技術棧,例如 Java 環境、Python 環境、Ruby 環境、資料庫、中間件等等。
4、構建基礎技術框架和服務,包括日誌、存儲、消息、緩存、搜索、數據源、集群擴展等等。
5、模擬用戶容量,構建測試環境。
6、開始編寫真正的業務代碼,實現產品功能。
7、迭代開發/測試,生生不息,周而復始,直到頭髮掉光為止……

如 果採用完善的 PaaS 平臺,可以直接忽略3、4、5三個步驟。無論你選擇哪個技術棧,PaaS 都會為你提供相關的配套設置,包括語言環境、運行環境、存儲和各種基礎服務。dotCloud 不僅支持諸如 PHP、MySql 等傳統技術框架,還包括 Node.js、MongoDB 等新興技術。基於 dotCloud 提供的開發工具和技術框架,你可以直接使用 dotCloud 的 SDK 編寫代碼和構建業務服務,並在聯網的時候把這些代碼推送到雲端,實現自動部署和測試。

dotCloud 把需要花費大量時間的手工工作和重複勞動抽象成組件和服務,並放到了雲端,另外,它還提供了各種監控、告警和控制功能,方便開發者管理和監控自己的產品。 dotCloud 最初運行在 Amazon 的 EC2 上,不過由於 dotClout 高度的抽象層次,理論上 dotCloud 可以運行在各種各樣的雲服務上面(我猜這就是 Docker 的功勞)。

一切看起來都是那麼的美好,如果後來的事情按照這個設想進行下去的話,軟體廠商和程式設計師都會松好幾口氣,那樣我們的頭髮還能和「普通地鐵站」裡的人一樣,倔強的飄在風裡。

遺憾的是,我們抵達的是「中關村地鐵站」!

PaaS 並沒有這樣一直春暖花開下去,事實上給開發者或程序猿做東西一直是件非常危險的事情,程序猿是一種很奇怪的動物,雖然他們常常分不清楚女友的髮型和衣服款 式,但是對開發環境和開發工具卻非常敏感並要求極高,稍不注意就會傷害到他們脆弱的心。所謂文人相輕,程序猿也不例外,對自己人常常是下死手的。所 以,PaaS 的概念雖好,但是由於認知、理念和技術的局限性,市場的接受度並不高,市場的規模也不夠大。

除 此之外,還有巨頭不斷進場攪局,IBM 的藍雲,微軟的 Azure,Amazon 的 EC2,Google 的 GAE,VMware 的 Cloud Foundry 等等,可謂強敵環伺,而且強敵都不差錢,想玩多久就玩多久,想玩多大玩多大。在這種情況下,雖然 dotCloud 在2011年初拿到了1000萬美元的融資,但依然舉步維艱。

再也不能這樣下去了!dotCloud 的創始人 Solomon Hykes 把大夥召集到一起,說,咱們過的不舒服,也不能讓別人痛快了,乾脆把我們的核心引擎開源扔到市面上看看,如何?大家面面相覷,最後把拳頭砸到桌面上,就這麼辦。

山重水複疑無路,柳暗花明又一村!

這 個基於 Linux Container 技術的核心管理引擎一經開源立刻得到了「業界」的熱烈吹捧,首當其衝的當然是程序猿們。看到好的開源產品,這幫平時靜若處子的貨色就像猴子看到賣桃的一 樣,一窩蜂衝上去,邊吃邊說好吃。這個容器管理引擎大大降低了容器技術的使用門檻,輕量級,可移植,虛擬化,語言無關,寫了程序扔上去做成鏡像可以隨處部 署和運行,開發、測試和生產環境徹底統一了,還能進行資源管控和虛擬化。程式設計師們流著口水驚呼,太方便了,太方便了。

業界幾個大佬也沒閒著,看看程式設計師們歡喜雀躍,再看看自己平臺上笨重的 PaaS,紛紛表示要接入或支持這個引擎。連最傳統的過氣帶頭大哥微軟都信誓旦旦的說,要以Windows 原生的方式運行這個引擎。

這個引擎的名字叫做 Docker,以 Go 語言寫成。

這 個結果是 dotCloud 公司的幾個創始人萬萬沒想到的,他們本來是按照窮小子模式來培育 Docker 的,沒成想直接蹦出一個婀娜多姿的大美女,明眸善睞,顧盼生姿,不僅把各類程序猿迷的神魂顛倒,而且旁邊幾個高樓大廈裡的土豪也時不時過來搭訕聊天。哥兒 幾個坐不住了,開始合計。

咱本來是想撿點芝麻,結果懷裡掉了個大西瓜,怎麼辦?
目光堅定,勇往直前,為了理想繼續撿芝麻!
你傻呀,別和杭州那個產品經理學,這麼好的機會砸腦門上,咱就甭躲了,專心培養西瓜吧。

從 此以後,他們開始專心研發 Docker 產品和維護相關社區,過上了幸福而快樂的生活。2013年10月 dotCloud 公司更名為 Docker 股份有限公司,2014年8月 Docker 宣布把平臺即服務的業務「dotCloud」出售給位於德國柏林的平臺即服務提供商「cloudControl」,dotCloud 的歷史告一段落。同年8月,Docker 內部員工 James Turnbull 發布了面向開發者、運維和系統管理員的 Docker 電子書《The Docker Book》。

過 去12個月,Docker 迅速成長為雲計算相關領域最受歡迎的開源項目,Amazon、Google、IBM、Microsoft、Red Hat 和 VMware 分別表示已經支持 Docker 技術或準備支持。據說,有 Linux 的地方,就可以運行 Docker。看情形 Windows 也快了。

有意栽花花不開,無心插柳柳成蔭!

Docker 這個技術到底能解決什麼問題呢?預知後事如何,且聽下回分解。

今日題圖來自杭州辣個項目經理的攝影作品,模特是他的大美女夫人。

相關焦點

  • Docker集群管理之Docker Compose
    前言:在上一篇《Docker集群管理之Docker Machine》中,我們通過源碼分析了解了Docker Machine的工作原理,使用者可以通過Docker Machine的一條命令在任意支持的平臺創建一個Docker主機,並能集中管理這些主機。Docker主機創建好之後,接下來就該考慮Docker容器部署的問題了。
  • Docker技術為什麼那麼受軟體研發的歡迎?
    來源於客戶需求;②、用什麼開發(J2EE,dot NET等)?來源於架構設計;③、開發方法(瀑布型、快速迭代等)?下面我們就來看看它的優越性:docker的優越性前面我們已經簡要說了下docker的技術和優越性。
  • ​Docker 數據卷的管理及自動構建docker鏡像
    /www.nmtui.com" >/data/index.html[root@docker01 ~]# curl 10.0.0.100http://www.nmtui.com設置共享卷,使用同一個卷啟動一個新的容器[root@docker01 ~]# docker run -d -p 8080:80 -v /data:/
  • 5w 字 | 172 圖 | 超級賽亞級 Spring Cloud 實戰
    docs.docker.com/engine/install/ubuntu/1.卸載老版本dockersudo apt-get remove docker docker-engine docker.io containerd runc2.設置倉庫// 命令1
  • docker下高並發和高可用之docker swarm使用
    ,操作步驟參考Linux下安裝和使用Docker安裝完,使用命令sudo systemctl start docker啟動docker,再通過命令docker version查看docker版本信息利用docker swarm 命令來指定其中一臺虛擬機為docker的Manager管理機docker swarm init --advertise-addr
  • Docker再體驗之Docker Compose,及它與Kubernetes的區別
    sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-composesudo chmod +x /usr
  • Docker 的第二次死亡
    面對平臺化的競爭,Docker 推出了調度引擎 Swarm,但 Swarm 從未真正流行起來,因為整個行業更傾向於採用 Kubernetes,這是 Docker 第一次死亡:它失去了平臺之戰。2016 年 9 月,Google 和 RedHat 聯合宣布了「fork Docker」,也就是後來的 CRI-O 項目,這就是這次棄用事件的起始,同時也宣告了競爭的結束。
  • docker的/var/run/docker.sock參數
    歡迎訪問我的GitHub這裡分類和匯總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos關於/var/run/docker.sock參數在創建docker容器時,有時會用到/var/run/docker.sock這樣的數據卷參數,例如以下docker-compose.yml
  • 阿里巴巴SpringCloud開源教程、文檔合集,趕緊收藏
    cloud config將配置存儲在資料庫中Spring Cloud Sleuth 之Greenwich版本全攻略Spring Boot Admin 2.1.0 全攻略阿里分布式事務框架GTS開源了!篇史上最簡單的SpringCloud教程 | 第十六篇: Spring Cloud Gateway 之filter篇史上最簡單的SpringCloud教程 | 第十七篇: Spring Cloud Gateway 之限流篇史上最簡單的SpringCloud教程 | 第十八篇: spring cloud gateway之服務註冊與發現源碼篇:深入理解Feign之源碼解析深入理解Eureka
  • Docker系列教程02-操作Docker容器
    t分配一個tty偽終端,支持終端登錄2)啟動容器使用docker create命令新建的容器處理停止狀態,可使用docker start啟動它。[root@qll251 ~]# docker run -it ubuntu /bin/bashroot@8b18b6758bb6:/#docker run相當於執行了兩個步驟:將鏡像放入容器中(docker create),然後啟動容器(docker start)。
  • 【Docker】系列教程02-操作Docker容器
    ~]# docker run -it ubuntu /bin/bashroot@8b18b6758bb6:/#docker run相當於執行了兩個步驟:將鏡像放入容器中(docker create),然後啟動容器(docker start)。
  • 如何開始docker - docker架構及創建容器
    安裝docker很簡單,啟動服務以後要怎麼開始使用呢?docker架構傳統的虛擬機架構是 物理機 -> 宿主機作業系統 -> Hypervisor支持 -> 虛擬機作業系統 -> 應用程式docker架構是 物理機 -> 宿主機作業系統 -> docker引擎 ->
  • Docker系列教程01-使用Docker鏡像
    docker search 語法docker search 語法例如,搜索mysql相關的鏡像,命令如下:docker pull 語法docker pull 語法通常情況下, 描述一個鏡像需要包括「名稱+標籤「信息。
  • docker 門外初體驗——docker 安裝(一)
    二、安裝三、驗證四、總結前言重寫對docker的學習記錄,最主要的原因之一,花了大量的時間進行學習,形成一個從0至1的認識,但是工作中卻沒見有實際應用,導致所學的知識存活率很低,也為了豐富自身的技術體系一、docker是什麼?Docker 是一個開源的應用容器引擎。
  • 雲計算核心技術Docker教程:Docker容器使用
    docker 客戶端非常簡單 ,我們可以直接輸入 docker 命令來查看到 Docker 客戶端的所有命令選項。可以通過命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
  • 雲計算核心技術Docker教程:docker Stack介紹
    docker stack和docker-compose使用方式相同,但是為什麼引入docker stack技術呢。docker stack的能力來源自docker引擎原生支持,你不需要安裝額外工具包去啟動docker 容器堆棧(docker stack 是docker swarm的一部分)。
  • Docker圖形化工具:Portainer
    二.DockerUI輕量級圖形頁面管理之DockerUI1.查看dockerui常量[root@localhost ~]# docker search dockerui 2.選擇喜歡的dockerui ~]# docker run -d --privileged --name dockerui -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock abh1nav/dockerui 前往網頁查看之前,您需要打開伺服器的9000埠:firewall-cmd --permanent
  • 雲計算核心技術Docker教程:Docker鏡像使用
    當運行容器時,使用的鏡像如果在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載,默認是從 Docker Hub 公共鏡像源下載。我們可以使用 docker images 來列出本地主機上的鏡像。
  • 宋寶華:Docker 最初的2小時(Docker從入門到入門)
    -aG docker $USER為了裝逼需要,我們在docker hub網頁註冊一個用戶名,我註冊的用戶名是21cnbao。client與docker host上面的docker daemon通信。當然docker client和host可以運行於一臺機器(我們做實驗的時候是一臺),默認的docker倉庫是Docker Hub。
  • 雲計算核心技術Docker教程:Dockerfile指令詳解
    功能也類似,不同之處如下:ADD 的優點:在執行 為 tar 壓縮文件的話,壓縮格式為 gzip, bzip2 以及 xz 的情況下,會自動複製並解壓到 。ADD 的缺點:在不解壓的前提下,無法複製 tar 壓縮文件。會令鏡像構建緩存失效,從而可能會令鏡像構建變得比較緩慢。