前端也來(lái)玩玩docker唄

docker


  1. 為什么使用docker

不知道怎么去解釋吧巧还,感覺(jué)就是省去了很多環(huán)境的安裝英妓,比如你要在服務(wù)器運(yùn)行一個(gè)node服務(wù)也拜,你必須要使用pm2這樣的工具去啟用泡嘴,然后假如還有個(gè)python的應(yīng)用丑瞧,我想肯定還要下個(gè)python的工具吧柑土,那么這樣就很多很雜,在自己的linux主機(jī)就變的很復(fù)雜很不好管理绊汹,而docker可以完美的去解決這些場(chǎng)景稽屏,不需要pm2也能在服務(wù)端跑起一個(gè)node服務(wù);

  1. docker的概念
  • image: 鏡像西乖,類似于一個(gè)說(shuō)明書(shū)狐榔,告訴docker怎么去做出一個(gè)這樣的應(yīng)用出來(lái);

  • container: 容器获雕,根據(jù)這個(gè)image生成薄腻,生成以后就可以通過(guò)命令去使用;

  1. docker常用的指令
  • docker image ls <查看鏡像列表>
  • docker run -d -p 3000:8000 列表名 <將鏡像8000運(yùn)行在本機(jī)的3000端口后臺(tái)運(yùn)行典鸡,產(chǎn)生一個(gè)容器>
  • docker ps -a <查看容器的執(zhí)行情況>
  • docker build -t 鏡像名稱 . <創(chuàng)建一個(gè)鏡像被廓,點(diǎn)標(biāo)示文件的文件位置>
  • docker container stop 容器id <暫停一個(gè)服務(wù)>
  1. 如何去創(chuàng)建一個(gè)簡(jiǎn)易的服務(wù)(以官網(wǎng)的例子說(shuō)明,node更簡(jiǎn)單了)
  • 新建一個(gè)空目錄萝玷,mkdir docker_example 嫁乘,名字隨意;
  • cd docker_example目錄球碉, 然后首先創(chuàng)建三個(gè)文件夾,
    touch Dockerfile蜓斧,touch app.py,touch requirements.txt;

Dockerfile: 這個(gè)文件夾的名字必須是這個(gè),然后說(shuō)下他的配置睁冬;我以官網(wǎng)的例子然后看注釋:

Dockerfile

FROM        node            <繼成>
COpy        app/app         <拷貝>
WORKDIR     /app            <工作目錄>
RUN         npm install     <執(zhí)行命令挎春,在編譯階段執(zhí)行>
EXPOSE      3000            <暴露一個(gè)端口>
CMD         node app.js     <命令,容器運(yùn)行階段的命令>
# 使用python作為運(yùn)行時(shí)候的夫鏡像豆拨,意思這個(gè)應(yīng)用繼承自python
FROM python:2.7-slim

# 創(chuàng)建一個(gè)工作目錄叫做app
WORKDIR /app

# 將當(dāng)前目錄內(nèi)容復(fù)制到/ app的容器中
COPY . /app

# 安裝requirements.txt中指定的任何所需包(這里不需要關(guān)心pip的問(wèn)題)
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# 使端口80可用于此容器外的世界直奋,我們?cè)诒緳C(jī)隨意一個(gè)接口去對(duì)接這個(gè)接口即可
EXPOSE 80

# 定義一個(gè)環(huán)境變量
ENV NAME World

# 在容器啟動(dòng)時(shí)運(yùn)行app.py,類似于我們?cè)诿钚腥?python app.py(類似于node app.js)
CMD ["python", "app.py"]

app.py 這個(gè)就是服務(wù)代碼了施禾,看不懂沒(méi)關(guān)系脚线,把它當(dāng)作js看就是了。弥搞。邮绿。

from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

requirements.txt,這就類似于node里面package.json文件了

Flask
Redis
  • 三個(gè)文件創(chuàng)建以后渠旁,那我們就去把這個(gè)鏡像生成,docker build --tag=friendlyhello .

--tag也可以寫(xiě)成--t,指定版本船逮,記住一定要在這個(gè)目錄下面執(zhí)行這個(gè)命令顾腊,鏡像名字為friendlyhello,好像不能有大寫(xiě)

  • 執(zhí)行 docker image ls挖胃;就可以看到你剛剛的friendlyhello這個(gè)鏡像了杂靶,

  • 執(zhí)行 docker run -p 4000:80 friendlyhello,然后用瀏覽器訪問(wèn)云主機(jī)的4000端口冠骄,然后就可以看到歡迎頁(yè)了伪煤,是不是很簡(jiǎn)單,很神奇凛辣,也不需要配置一大堆的東西了抱既;


初步的一個(gè)簡(jiǎn)單基于docker的服務(wù)就跑通了,后期在慢慢研究它更多的功能吧扁誓;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末防泵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蝗敢,更是在濱河造成了極大的恐慌捷泞,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寿谴,死亡現(xiàn)場(chǎng)離奇詭異锁右,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)讶泰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門咏瑟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人痪署,你說(shuō)我怎么就攤上這事码泞。” “怎么了狼犯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵余寥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我悯森,道長(zhǎng)宋舷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任瓢姻,我火速辦了婚禮肥缔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汹来。我一直安慰自己续膳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布收班。 她就那樣靜靜地躺著坟岔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摔桦。 梳的紋絲不亂的頭發(fā)上社付,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音邻耕,去河邊找鬼鸥咖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兄世,可吹牛的內(nèi)容都是我干的啼辣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼御滩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸥拧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起削解,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤富弦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后氛驮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體腕柜,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年矫废,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盏缤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磷脯,死狀恐怖蛾找,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赵誓,我是刑警寧澤打毛,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站俩功,受9級(jí)特大地震影響幻枉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诡蜓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一熬甫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔓罚,春花似錦椿肩、人聲如沸瞻颂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贡这。三九已至,卻和暖如春厂榛,著一層夾襖步出監(jiān)牢的瞬間盖矫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工击奶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辈双,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓柜砾,卻偏偏與公主長(zhǎng)得像湃望,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子局义,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • 1.Compose介紹 Docker Compose是一個(gè)用來(lái)定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具萄唇。一個(gè)使用Doc...
    渝味閱讀 7,214評(píng)論 0 2
  • 《Docker從入門到實(shí)踐》閱讀筆記 原書(shū)地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,380評(píng)論 1 39
  • docker基本概念 1. Image Definition 鏡像 Image 就是一堆只讀層 read-only...
    慢清塵閱讀 8,748評(píng)論 1 21
  • 讓博客Docker化檩帐,輕松上手Docker Docker是一個(gè)有趣的技術(shù),在過(guò)去的兩年已經(jīng)從一個(gè)想法變成了全世界的...
    喵喵唔的老巢閱讀 339評(píng)論 0 0
  • 僅以此小詩(shī)緬懷兄弟重逢 月明云稀孤星墜, 身已乏四敞,心無(wú)寐泛源。 一點(diǎn)殘紅,半支杜康陪忿危。 猶記昔日豪情灑达箍, 歌齊鳴 ,酒...
    南瓜芋頭閱讀 443評(píng)論 3 6