Docker從零到集群(2/3)—Machine,Compose,Swarm

系列目錄

Docker從零到集群(1/3)—Machine,Compose,Swarm
Docker從零到集群(2/3)—Machine,Compose,Swarm
Docker從零到集群(3/3)—Machine,Compose,Swarm

前言

通過(guò)前一篇文章Docker基礎(chǔ)概念已經(jīng)說(shuō)明了構(gòu)建一個(gè)Docker集群系統(tǒng)的思路,那么就從本文開始實(shí)踐如何一步步實(shí)現(xiàn)Docker單機(jī)應(yīng)用系統(tǒng),而下一篇文章會(huì)介紹Docker集群系統(tǒng)的搭建

準(zhǔn)備

  • 本文實(shí)踐環(huán)境為Mac OS X 10.13.2(High Sierra)
    準(zhǔn)備好VPN,否則相關(guān)文檔和工具的訪問(wèn)會(huì)非常慢,甚至無(wú)法訪問(wèn)

  • 安裝Docker For Mac
    Docker官方網(wǎng)站下載,dmg文件,下載后解壓拖拽放入應(yīng)用程序文件夾即可
    Docker For Mac 替代了Docker Tools,集成了Docker開發(fā)所有的工具環(huán)境

  • 安裝VirtualBox虛擬機(jī),用于Docker Machine創(chuàng)建虛擬機(jī)
    Mac OS X默認(rèn)是沒(méi)有虛擬機(jī)的,所以要使用Docker Machine,需要事先安裝好VirtualBox,這在Docker的官方文檔上有相關(guān)說(shuō)明

步驟

一、Docker Machine

  1. 在已經(jīng)安裝完成VirtualBox的情況下,使用Dokcer Machine創(chuàng)建虛擬機(jī),命令如下:
    docker-machine create m1
    本文所有命令都會(huì)以能完成功能為基礎(chǔ)的最小原則,以方便初學(xué)者學(xué)習(xí),更多命令參數(shù)幫助可以通過(guò)-h/--help來(lái)獲取,還可通過(guò)查閱官方文檔進(jìn)一步學(xué)習(xí)
    以上命令中,會(huì)默認(rèn) -d/--driver virtualbox 參數(shù),意思是使用virtualbox的驅(qū)動(dòng)來(lái)創(chuàng)建一臺(tái)虛擬機(jī),這臺(tái)虛擬機(jī)會(huì)帶有Docker運(yùn)行環(huán)境,我們可以在這臺(tái)虛擬機(jī)快速構(gòu)建我們的Docker單機(jī)應(yīng)用,包括創(chuàng)建鏡像,上傳鏡像,和運(yùn)行容器

  2. 查看已經(jīng)創(chuàng)建好的虛擬機(jī)
    docker-machine ls

  3. 進(jìn)入創(chuàng)建好的虛擬機(jī)m1
    docker-machine ssh m1
    就這么簡(jiǎn)單,我們就進(jìn)入到了剛才創(chuàng)建好的虛擬機(jī)中,和真實(shí)宿主機(jī)器的環(huán)境一樣,我們可以通過(guò)Docker命令來(lái)構(gòu)建Docker鏡像了
    需要注意的是,以上3個(gè)步驟為Docker Machine的基本使用,如果不想使用虛擬機(jī),那么在宿主機(jī)上安裝好Docker環(huán)境后,可以直接在宿主機(jī)上操作,以上3個(gè)步驟省略

二、Docker File

  1. 在原應(yīng)用文件夾下編寫Dockerfile文件,指定部署序列,Node應(yīng)用例子如下:
# FROM node
FROM mhart/alpine-node:latest
#創(chuàng)建應(yīng)用目錄
RUN mkdir -p /usr/node/autodeploy
#設(shè)置工作目錄
WORKDIR /usr/node/autodeploy
#復(fù)制所有文件到工作目錄
COPY . /usr/node/autodeploy
#編譯運(yùn)行node項(xiàng)目
RUN npm install
#運(yùn)行命令
CMD ["npm", "start"]

Dockerfile文件即指定你的應(yīng)用所需部署環(huán)境,所需配置等等,這是Docker容器部署中最為核心的工作,持久化構(gòu)建腳本

三、Docker Compose

  1. 拷貝應(yīng)用代碼到虛擬機(jī)中(如果非虛擬機(jī)環(huán)境,則此步驟可省略)
    docker-machine scp -r 源碼目錄 m1:目的路徑

  2. 編寫docker-compose.yml文件(具體內(nèi)容可查詢官網(wǎng),后續(xù)也會(huì)單獨(dú)寫一篇文章講解)
    以下docker-compose.yml文件配置了兩個(gè)服務(wù),分別是一個(gè)nginx服務(wù)器和一個(gè)node服務(wù),都指定了構(gòu)建目錄,也就是說(shuō)會(huì)指定構(gòu)建目錄下的Dockerfile,分別構(gòu)建出兩個(gè)鏡像,然后還配置了nginx與node應(yīng)用連接,這樣在nginx中,就可以通過(guò)域名node訪問(wèn)

version: '3'
services:
  nginx:
    build: ./nginx
    ports:
      - "80:80"
    volumes:
      - /Users/cheney/Documents/docker/nginx/log:/var/log/nginx
      #   - /Users/cheney/Documents/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      #   - /Users/cheney/Documents/docker/nginx/conf.d:/etc/nginx/conf.d
      #   - /Users/cheney/Documents/docker/nginx/html:/usr/share/nginx/html
    links:
      - autodeploy
  
  autodeploy:
    build: ./autodeploy
    expose:
      - "10001"
  1. 構(gòu)建鏡像和運(yùn)行容器
    docker-compose up
    通過(guò)這個(gè)命令,會(huì)執(zhí)行當(dāng)前目錄下的docker-compose.yml文件,根據(jù)里面的配置構(gòu)建鏡像,啟動(dòng)容器,這樣,一個(gè)單機(jī)docker應(yīng)用就完成了

四、訪問(wèn)測(cè)試

【在瀏覽器輸入】http://m1的IP地址
【如不使用docker-machine虛擬機(jī),直接訪問(wèn)本地】http://localhost
這樣就可以看到返回結(jié)果了,在本例中,nginx和node的代碼就省略了,訪問(wèn)原理很簡(jiǎn)單
nginx容器監(jiān)聽了80端口,然后轉(zhuǎn)發(fā)給http://node:10001, 因?yàn)閚ode容器監(jiān)聽10001端口,所以node容器就會(huì)收到請(qǐng)求,然后express應(yīng)用路由攔截,返回?cái)?shù)據(jù)
本例中,為了清晰直接,使用nginx和node命名,實(shí)際中應(yīng)用名稱可以mynginx,mynode等

總結(jié)

通過(guò)以上步驟,我們就能完成docker單機(jī)應(yīng)用環(huán)境的部署搭建,因?yàn)槊總€(gè)人具體應(yīng)用是不同的,所以本文省略了具體應(yīng)用的代碼,只展示最關(guān)鍵的docker命令控制。通過(guò)docker-compose.yml配置docker鏡像和容器的構(gòu)建啟動(dòng),極大的省略了用繁瑣的docker命令一個(gè)個(gè)構(gòu)建鏡像和啟動(dòng)容器

后續(xù)文章會(huì)介紹如何使用Docker Swarm進(jìn)一步將我們的單機(jī)應(yīng)用拓展成為集群,謝謝閱讀

作者:CheneyXu
關(guān)于:XServer官網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評(píng)論 6 535
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,744評(píng)論 3 421
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評(píng)論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評(píng)論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,935評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,325評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評(píng)論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,534評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,084評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,892評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,067評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,322評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評(píng)論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評(píng)論 1 289
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,800評(píng)論 3 395
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,084評(píng)論 2 375

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