離線服務器下docker的部署與應用

一分鐘內形成docker的模糊概念

網上很多文章避免將docker與虛擬機混為一談,但對于初學者來說,完全可以將docker當做一種虛擬機技術先匪,只需要牢牢記住一點最重要的區(qū)別:docker依賴于物理機的內核,所以在linux下“生成的docker”,一般不能直接在windows下運行考传。(虛擬機是完完全全模擬了一臺物理機,這是一個很大的區(qū)別)证鸥。
當你有了這樣的一個模糊概念僚楞,接下來只需要快速了解docker的三個基礎組成部分,倉庫枉层、鏡像泉褐、容器,就可以快速的應用起來鸟蜡。類比虛擬機膜赃,鏡像就相當于安裝虛擬機時用的iso文件,倉庫自然就是一個官方存放鏡像的地方矩欠,方便用戶直接“下載”财剖,當你的虛擬機運行起來后,就相當于一個容器癌淮。

我為什么使用docker躺坟,需求是什么

在很多項目中,我們需要對一些url進行定時撥測乳蓄,獲取這些url的各種指標咪橙,例如響應時間、渲染時間等等虚倒,網上有許多開源的工具供我們挑選使用美侦,sitespeed就是其中之一。sitespeed可以對訪問過程進行度量魂奥,形成各種指標菠剩。訪問過程進行錄相、截圖耻煤。指標分為瀏覽(體驗)類指標具壮、評分指標、DNS指標等幾個維度哈蝇。關于sitespeed更為詳細的介紹可自行搜索棺妓。
然后由于其使用圖形界面的瀏覽器,不太適合做為服務端程序運行炮赦,同時其各種依賴庫的安裝配置較為麻煩怜跑,故以docker的方式運行是比較合適的。https://www.sitespeed.io/在sitespeed.io的官方介紹上也指出所提供的docker鏡像部署了所有的運行環(huán)境吠勘,對于用戶只需直接使用即可性芬。

離線安裝docker:部署yum源或者rpm/deb包安裝

對于某些特定環(huán)境峡眶,服務器是不允許訪問互聯(lián)網的,因此不能直接從軟件源下載docker進行安裝植锉,這就造成了很多依賴包安裝的麻煩幌陕。在此可以有幾種不同的離線安裝方式可供選擇:

  • 對于ubuntu系統(tǒng),你只需一臺聯(lián)網的同環(huán)境的虛擬機就可以得到deb安裝包和所有的依賴包汽煮。
    apt-get install --download-only docker這條命令的具體用法可以自行搜索,解決令人頭疼的依賴問題簡直舒服棚唆。
  • 對于centos系統(tǒng)暇赤,同樣可以搜索所有的依賴包,通過rpm包的方法安裝宵凌。但更加推薦部署本地yum源的方式鞋囊,簡單高效一勞永逸,部署步驟可自行搜索瞎惫。

鏡像文件的導入導出

不能訪問互聯(lián)網溜腐,意味著docker提供的官方倉庫也不可訪問,因此需要我們在本地虛擬機docker pull sitespeed.io相應的鏡像瓜喇,可以簡單測試是否可用挺益。

[~]$ docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
docker.io/hello-world                latest              e38bc07ac18e        7 weeks ago         1.85 kB
docker.io/sitespeedio/sitespeed.io   latest              38463a656de8        8 weeks ago         1.77 GB
[~]$ docker run hello-world
Hello from Docker!

通過docker images看到本地存放了兩個鏡像,docker run *命令可以簡單的在某個鏡像文件基礎上啟動一個容器乘寒。
接下來要做的就是將鏡像文件使用save命令導出為tar文件:
docker save 38463a656de8> /root/sitespeed.tar
通過物理設備傳輸至離線服務器上望众,通過load命令導入鏡像:
docker load < /root/sitespeed.tar
導入完成后,用docker images命令查看伞辛,驚奇的發(fā)現(xiàn)REPOSITORY和TAG列均為<none>烂翰,所以save命令保存的并不是所有的信息,具體的區(qū)別自行搜索即可蚤氏。不過不影響使用甘耿,我們只要修改一下就可以正常使用了。
docker tag 38463a656de8 docker.io/sitespeedio/sitespeed.io:latest

docker鏡像是如何制作的

基于docker提供的服務竿滨,我們想要制作自己特定功能的docker鏡像佳恬,只需要按照格式編寫一個Dockerfile文件即可。一個簡單的Dockerfile如下:

FROM ubuntu14.04
COPY start.sh /start.sh
RUN apt-get install -y gcc
CMD
ENTRYPOINT ["/start.sh"]

FROM命令用于指定一個基礎鏡像(當然可以指定一個空鏡像scratch)姐呐,COPY和RUN都是字面意思殿怜,CMD和ENTRYPOINT 指定docker啟動時的運行命令,關于二者的區(qū)別曙砂,在此不細說头谜,推薦使用ENTRYPOINT。
編寫完成后鸠澈,運行命令:docker build -t my_name:my_tag
通過docker images命令就可以看到本地已經有了剛剛創(chuàng)建的鏡像柱告,通過
docker run my_name:my_tag就可以啟動并運行截驮。
不得不提的是,Dockerfile中的每一條命令都會創(chuàng)建一個臨時層际度,(類似于套娃的感覺)所以要注意命令的書寫方式葵袭,比如多條RUN命令合為一條書寫。同時乖菱,減少不必要的操作坡锡。例如,新建一個文件窒所,在后面步驟又刪除了鹉勒,這樣兩次操作都會存儲在最終的docker鏡像中,生成鏡像的體積也會增大吵取,這就是網上一些不成熟的鏡像體積很大的原因禽额。
關于docker啟動時的很多參數(shù)都可以自己按需查找,個人覺得-v和--entrypoint參數(shù)結合使用皮官,會對大家測試一些小東西很有幫助脯倒。

-v 指定一個本地目錄掛載到容器中指定位置
--entrypoint 指定docker運行入口,覆蓋Dockerfile中的CMD和ENTRYPOINT

例如:

docker run --entrypoint /app/start.sh -v /root/app:/app docker_img.io

首先通過-v將本地的/root/app目錄掛載到鏡像中的/app目錄捺氢,之后再通過--entryponit指定運行入口為/app/start.sh藻丢。
有了這樣的用法,我們可以通過Dockerfile建立一個包含各種運行環(huán)境的基礎鏡像讯沈,通過這樣的方式郁岩,測試我們自己的小程序(雖然應用場景有限)。當然還是要牢記文章開頭所說的缺狠,docker是需要基于物理機的內核问慎。

補充:關于docker的垃圾回收問題

在某次意外操作后,發(fā)現(xiàn)依賴docker的應用無法正常運行挤茄,排查原因發(fā)現(xiàn)竟然是磁盤空間不足如叼,docker無法啟動。發(fā)現(xiàn)在/var/lib/docker/目錄下存在大量文件穷劈,原來docker每次運行時會在/var/lib/docker/containers以及/var/lib/docker/overlay下生成一些相關文件笼恰,具體作用可自行查閱。但問題在于docker運行結束并不會自動回收產生的這些記錄文件歇终,隨著時間的積累社证,導致歷史文件會越來越多。如何解決评凝,docker官方提供了相關的垃圾回收功能追葡,需手動運行,當然也可以自己編寫垃圾回收守護進程,或者在github上有許多好的開源程序可供使用宜肉。

本文主要敘述了一些簡單的docker使用場景匀钧,若果個別地方有錯誤,請不吝指出谬返。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末之斯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遣铝,更是在濱河造成了極大的恐慌佑刷,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酿炸,死亡現(xiàn)場離奇詭異项乒,居然都是意外死亡,警方通過查閱死者的電腦和手機梁沧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝇裤,“玉大人廷支,你說我怎么就攤上這事∷ü迹” “怎么了恋拍?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長藕甩。 經常有香客問我施敢,道長,這世上最難降的妖魔是什么狭莱? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任僵娃,我火速辦了婚禮,結果婚禮上腋妙,老公的妹妹穿的比我還像新娘默怨。我一直安慰自己,他們只是感情好骤素,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布匙睹。 她就那樣靜靜地躺著,像睡著了一般济竹。 火紅的嫁衣襯著肌膚如雪痕檬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天送浊,我揣著相機與錄音梦谜,去河邊找鬼。 笑死,一個胖子當著我的面吹牛改淑,可吹牛的內容都是我干的碍岔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼朵夏,長吁一口氣:“原來是場噩夢啊……” “哼蔼啦!你這毒婦竟也來了?” 一聲冷哼從身側響起仰猖,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捏肢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饥侵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸵赫,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年躏升,在試婚紗的時候發(fā)現(xiàn)自己被綠了辩棒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡膨疏,死狀恐怖一睁,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情佃却,我是刑警寧澤者吁,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站饲帅,受9級特大地震影響复凳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜灶泵,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一育八、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赦邻,春花似錦单鹿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至湃鹊,卻和暖如春儒喊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背币呵。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工怀愧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侨颈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓芯义,卻偏偏與公主長得像哈垢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扛拨,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件耘分?Google Compute Engi...
    ahohoho閱讀 15,535評論 15 147
  • 轉載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,501評論 0 120
  • 遇見痛苦绑警,不愁煩 遇見快樂求泰,不圖貪 因陀羅之網有無數(shù)個面 舊舊暖暖,一寸容下一個心愿 時間之光劃過到從前 回到細細...
    abed8da56879閱讀 218評論 0 1
  • 心想生自在人生【自在大學】自在經9期27:療愈清理 2017-11-24 心想生自在人生合伙人 1计盒、和大家分享過上...
    米妙和閱讀 967評論 0 1
  • 她與他的相遇是命運的偶然北启,是兩條相交線的匯合卜朗,是匯合之后的分離。 她柔情似水咕村,他道貌岸然聊替,兩個人算...
    超人阿淇閱讀 295評論 0 0