Docker遇見golang

?

golang logo

在我國古代亮蛔,傳說天庭中有種種天兵天將,有看守四大天門的(docker0網(wǎng)橋)浴讯,有負責傳話的門將(REST API)朵夏,有負責人間和天界聯(lián)絡的,如財神爺榆纽,土地公等(NAT侍郭,DNS)询吴,而且還有綁定在每個神仙身上的坐騎(EVS,NFS亮元,BS,? EFS)猛计,還有關(guān)于各個管轄的奏折(Log)。由于每個上仙的職責不同(Controller爆捞,Scheduler)奉瘤,被管轄范圍的人數(shù)或者項目不同(Container,Host),還有吃了可以長命百歲的仙桃(image)等等等等煮甥;但是呢盗温,天庭有個規(guī),不許神仙與凡人相愛成肘,而處于修道或者成魔成妖的人或者動物卖局,則屬于被監(jiān)控和被調(diào)度的資源。

? ? 原來古代的管理模式也屬于云計算的范疇双霍,即通過一個請求可以將計算資源砚偶,存儲資源,網(wǎng)絡資源進行調(diào)度洒闸、分配與整合染坯。

牛郎:

? ? 牛郎是一個很聰明,很樸實丘逸,很簡單的語言单鹿,他所處的世代(runtime)是一個多帝王(CPU),多耕地(Disk)深纲,嚴制度(Gc)仲锄,快通訊(Goutinue)的朝代。也正是就這樣湃鹊,天時地利人和儒喊,樣樣是牛郎的優(yōu)勢,于是乎牛郎(Go)就誕生在世人的眼簾涛舍。由于k8s的組件多數(shù)是基于go開發(fā)的澄惊,再加上牛郎自的優(yōu)勢唆途,而他的貢獻很快被世人所應用富雅,大致有這幾個特點:

? ? 1、部署簡單肛搬;相比Python没佑,Python官方 PyPI 源又經(jīng)常出問題,需要搭建私有鏡像温赔,而維護這個鏡像又要花費不少時間和精力蛤奢,而go語言可編譯可執(zhí)行的靜態(tài)文件,除了 glibc 外沒有其他外部依賴。

? ? 2啤贩、效率之快待秃;相比Java,它完善的基礎(chǔ)庫和的和高效gc痹屹,相比C語言章郁,雖然C和C++有超快的處理速度和強大的性能,但是這兩個者對字符串處理能力較弱志衍,也沒有g(shù)c暖庄,導致開發(fā)周期提升。

? ? 3楼肪、并發(fā)性好培廓;Goroutine和channel 使得編寫高并發(fā)的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題春叫。單個 Go 應用也能有效的利用多個 CPU 核肩钠,并行執(zhí)行的性能好。

? ? 4象缀、良好的語言設計蔬将;定義變量自由,切片和接口的設計大大提高了代碼的通用性和移植能力央星。比如 gofmt 自動排版 Go 代碼霞怀,很大程度上杜絕了不同人寫的代碼排版風格不一致的問題。

? ? 而民間傳說有一件法寶名叫beego框架莉给,它正是借助牛郎的優(yōu)勢所發(fā)明出來的一件器皿毙石。而它的出現(xiàn)大大簡化耕地(程序)和農(nóng)場(web項目)的開發(fā)的周期和流程設計,起初只需要按照生成模板進行增刪改颓遏,就可以快速創(chuàng)建和部署一個小型農(nóng)場徐矩。

? ? 要先獲取此件寶器,必須先去github官網(wǎng)下載源碼叁幢,進行編譯滤灯,然后搭建好bee和beego的環(huán)境,搭建好之后通過如下寶器的咒語創(chuàng)建beego項目曼玩,比如下面命令就可以創(chuàng)建項目:

bee new hello

? ? 創(chuàng)建好項目之后鳞骤,便可以給耕地種植不同種類的農(nóng)作物,就可以讓其生長黍判,如下圖所示的目錄結(jié)構(gòu)是我這個窮屌絲的農(nóng)場結(jié)構(gòu)豫尽,簡單的國際化處理,特別簡陋顷帖,希望大家熟練去應用牛郎的貢獻美旧。

織女(Docker):

? ? 在云計算中渤滞,也就是在天界中,織女Docker就好比集裝箱榴嗅,天界就好比大貨輪妄呕。Mac上的Docker好比煙熏妝的織女,深沉而又優(yōu)雅嗽测。

? ? “在集裝箱之前趴腋,貨物運輸沒有統(tǒng)一的標準方式進行搬運,于是鐵路论咏、公路优炬、海洋等各種運輸之間,需要大量的人力作為貨物中轉(zhuǎn)厅贪,效率極低蠢护,而且成本很高。集裝箱出現(xiàn)之后养涮,世界上絕大多數(shù)的貨物運輸都可以放到這個神奇的箱子里葵硕,然后在公路、鐵路贯吓、海洋等所有運輸場景下懈凹,這個箱子都可以不用變化形態(tài)直接可以承運,而且中間的中轉(zhuǎn)工作悄谐,都可以通過大型機械搞定介评,效率大大提升”。引自騰訊高級工程師鄒立巍在《什么是 Docker爬舰?》這篇文章的上半部分對Docker的通俗解釋们陆;

? ? 正是由于標準貨輪的出現(xiàn),大大推動了云概念的進階和天庭的改革情屹。隨著docker對天界的應想呈遞增式增長坪仇,而且關(guān)于它的奏章目前也不少,每個上仙團隊對docker的關(guān)注點也并不相同垃你,這個得結(jié)合自己的應用去使用“集裝箱”椅文。

? ? 織女Docker常見有三重性格:即MacOS、Linux/Unbutu惜颇、Windows皆刺,它們的安裝步驟分別在下篇文章中可進行閱覽,包括內(nèi)容有織女Docker的命令官还、存儲和網(wǎng)絡等芹橡。

鵲橋(Dockerfile):

? ? 每當牛郎(Go)和織女(Docker)相遇毒坛,一見鐘情望伦。而最后被王母(OS)經(jīng)常阻攔或者拆散林说。但是他們十分相愛以至于感動了世間萬物,即鏡像的出現(xiàn)拉近了彼此之間的距離屯伞,推動了故事的進一步發(fā)展腿箩;都說過Docker是集裝箱的容器,容器里面放的是應用劣摇,應用可以是web項目珠移、也可以是程序還可以是農(nóng)場。

有這么一句話:“Any problem in computer science can be solved by another layer of indirection”末融。意思是說钧惧,在計算機科學領(lǐng)域的任何問題都可以增加一個間接的中間層來解決。

? ? 所以鵲橋的出現(xiàn)就相當于一個中間層勾习∨ǖ桑織女Docker通過Dockerfile構(gòu)建出來鵲橋,來加載啟動鏡像和牛郎Go相遇巧婶,而鏡像包的制作離不開牛郎家的牛皮即壓縮好的tar包乾颁。鵲橋制作的模板如下:

FROM centos:latest

MAINTAINER nanzehua nanzehua@163.com

EXPOSE 8080

#RUN passwd paas < paas_pwd.txt

#RUN rm paas_pwd.txt

ADD hello.tgz /var/paas/project-hello/

#COPY tar -zxvf /var/paas/project-hello/hello.tgz

RUN mkdir -p /var/paas/log/

RUN touch /var/paas/log/project-hello.log

RUN chown paas:paas -R /var/paas/

RUN chmod -R 750 /var/paas/

#ENTRYPOINT ["/var/paas/project-hello"]

CMD ["/var/paas/project-hello/hello"]

? ? ADD和COPY的區(qū)別是,ADD命令會將壓縮好的tar包直接解壓到指定目錄中艺栈,然后通過docker build -t hello:1.1.1來編譯鏡像英岭,為了提高工作效率,可以通過編寫shell腳本來構(gòu)建自動化出包湿右,直接用jenkins鏡像搭建CI環(huán)境诅妹,再將Go項目編譯二進制文件的時候值得注意一點是,由于編譯環(huán)境不同毅人,通過交叉編譯后漾唉,二進制文件才能在指定環(huán)境中運行,大致這三種場景:

# Mac下進行交叉編譯至Linux64

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

#bee pack -be=GOOS=linux -exs=.md:.go:.DS_Store:.tmp:.zip:.exe.exe~ -exp=.:swagger:static:runtime

# Mac下進行交叉編譯至Windows64

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build

# Linux下編譯

go build

? ? 這些問題注意之后堰塌,咱們就生成了一個名為的hello的Image赵刑,然后通過

docker run -p 8080:8080 hello:1.1.1

就成功啟動了一個容器,瀏覽器中在通過

http://127.0.0.1:8080

就可以看到beego的主界面和已經(jīng)國際化的個別字樣了场刑,詳細的自動化shell腳本和go代碼般此,我已經(jīng)上傳至github庫Docker+beego,歡迎大家的指點和補充牵现。

? ? 下一節(jié)铐懊,講解Docker網(wǎng)絡、CLI和日志瞎疼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末科乎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贼急,更是在濱河造成了極大的恐慌茅茂,老刑警劉巖捏萍,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異空闲,居然都是意外死亡令杈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門碴倾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逗噩,“玉大人,你說我怎么就攤上這事跌榔∫煅悖” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵僧须,是天一觀的道長片迅。 經(jīng)常有香客問我,道長皆辽,這世上最難降的妖魔是什么柑蛇? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮驱闷,結(jié)果婚禮上耻台,老公的妹妹穿的比我還像新娘。我一直安慰自己空另,他們只是感情好盆耽,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扼菠,像睡著了一般摄杂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上循榆,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天析恢,我揣著相機與錄音,去河邊找鬼秧饮。 笑死映挂,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的盗尸。 我是一名探鬼主播柑船,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泼各!你這毒婦竟也來了鞍时?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逆巍,沒想到半個月后及塘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蒸苇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吮旅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溪烤。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖庇勃,靈堂內(nèi)的尸體忽然破棺而出檬嘀,到底是詐尸還是另有隱情,我是刑警寧澤责嚷,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布鸳兽,位于F島的核電站,受9級特大地震影響罕拂,放射性物質(zhì)發(fā)生泄漏揍异。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一爆班、第九天 我趴在偏房一處隱蔽的房頂上張望衷掷。 院中可真熱鬧,春花似錦柿菩、人聲如沸戚嗅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懦胞。三九已至,卻和暖如春凉泄,著一層夾襖步出監(jiān)牢的瞬間躏尉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工后众, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留醇份,地道東北人夕春。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓丢氢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親念赶。 傳聞我的和親對象是個殘疾皇子拗盒,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容