程序員的Docker教程 / 制作自己的 Docker Image (1)

前言

如果你不知道什么是 Docker, 請(qǐng)自行Google。簡(jiǎn)單的安裝說明可以自行網(wǎng)上搜索,也可以看看我之前寫的 Docker 初體驗(yàn)
作為一個(gè)程序員,我們最大的痛苦是吃的是草,擠出來的都是蛋白質(zhì)。電腦破得老牛拉車,可是為了開發(fā)/測(cè)試不同的軟件,我們的電腦上需要有 Visual studio, VS Code, SQL Server /MySQL/MongoDB,Redis,Niginx,Jenkins,RabbitMQ ..... 以及一大堆需要時(shí)候很好用,不需要的時(shí)候只能占用我們寶貴內(nèi)存和CPU計(jì)算資源的各種工具。

目標(biāo)設(shè)置

制作一個(gè) Docker Image,功能是使用 Nginx 顯示一個(gè) Hello World 靜態(tài)網(wǎng)頁。


Hello World!

下載本教程 Docker Image
docker pull edmundhuang/learning:v1

生產(chǎn)環(huán)境準(zhǔn)備

  • Windows 10 專業(yè)版 + Hyper-V
  • Docker for Windows + Kitematic
  • VS Code + Docker Extension
  • Docker ID

本文將教你一步步學(xué)會(huì)制作docker image,并上傳至Docker Hub,所有源碼開源于 Github。
直接使用以下命令可以得到本教程完成時(shí)的結(jié)果,但我建議你暫時(shí)不要使用下面這兩個(gè)命令。

dock pull edmundhuang/learning
git clone https://github.com/edmundhuang/DockerLearning.git

創(chuàng)建HTML文件

  1. 準(zhǔn)備一個(gè)空文件夾 Learning (當(dāng)然也可以是任意你喜歡的名稱),用 VS Code打開此文件夾。
  2. 新建文件夾 src,并在文件夾 src 內(nèi)新建 index.html 文件,內(nèi)容如下:
<html>
    <head>
        <title>Docker in 30 minutes</title>
    </head>
    <body>
        <h1>Hello, World!</h1>
    </body>
</html>

初始化 Docker 文件

VS Code 安裝 Docker Extension 后,按 F1,輸入Docker
出現(xiàn)的第一條命令是 Docker:Add docker files to workspace
按回車后出現(xiàn)語言選擇選Other,
按回車后出現(xiàn)端口選擇(默認(rèn)為3000),再次按下回車即可。文件夾中將多出4個(gè)文件:

  • .dockerignore
  • docker-compose.debug.yml
  • docker-compose.yml
  • Dockerfile

Docker build

docker build -f Dockerfile .

請(qǐng)注意,最后面有一個(gè) . 代碼當(dāng)前文件夾,此命令的簡(jiǎn)化模式為

docker build .

沒有指定文件情況下,默認(rèn)尋找當(dāng)前文件夾下 Dockerfile。
修改 Dockerfile 文件內(nèi)容為:

FROM nginx

保存 Dockerfile, 運(yùn)行Docker builder命令后,Docker 引擎將從 Docker hub 下載最新的 Nginx Image。下載完成后打開Kitematic(桌面右下角Docker圖標(biāo)右鍵菜單上有),運(yùn)行最新下載的 Nginx,可以看見Nginx默認(rèn)的歡迎頁面。點(diǎn)擊 “Exec” 打開Powershell, Docker會(huì)自動(dòng)將powershell 連接到Image里面的linux 環(huán)境,記住這時(shí)候輸入的命令是linux命令,看見的是nginx服務(wù)器的環(huán)境。


Nginx

構(gòu)建 Learning Image

修改 Dockerfile 內(nèi)容為:

FROM nginx
COPY src/. /usr/share/nginx/html

將我們創(chuàng)建的index.html復(fù)制到nginx啟動(dòng)文件夾下。
執(zhí)行命令

docker build -t learning .

請(qǐng)注意此處加入了 -t learning 參數(shù),表示我們希望構(gòu)建的Image 名稱為L(zhǎng)earning。因?yàn)槿绻麤]有 Image 名稱,在Kitematic 的My Images 里面將不會(huì)顯示,只能通過 Docker image ls 命令查看。
打開Kitematic,在My Images 中找到Learning,點(diǎn)擊Create 創(chuàng)建一個(gè) Container 。

Hello, World!

小結(jié)

本文中,簡(jiǎn)單介紹了如何使用 Docker 命令構(gòu)建 Image,其中涉及到的命令請(qǐng)讀者自行查閱相關(guān)資料,因?yàn)槿绻覍懺谶@兒的話,再多幾千字也不夠。
Docker Build 命令第一次運(yùn)行的時(shí)候較慢,因?yàn)樾枰獜倪h(yuǎn)程服務(wù)器下載Nginx Image,再次運(yùn)行就很快,一般幾秒鐘就能運(yùn)行完成。但是問題來了,在開發(fā)過程中,我們需要經(jīng)常修改網(wǎng)站中的文件,如果每次修改都需要重新制作一次 Docker Image,也是挺麻煩的,有沒有什么可持續(xù)發(fā)展的道路呢?請(qǐng)關(guān)注下一篇,持續(xù)集成/持續(xù)發(fā)布(CI/CD)。

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

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

  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,562評(píng)論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,520評(píng)論 0 120
  • 以下原文轉(zhuǎn)載于(https://docs.docker.com/docker-for-mac/)(想找中文版的最新...
    Veekend閱讀 7,594評(píng)論 0 17
  • 有一個(gè)女孩子,他在無意中喜歡上了一位男孩子,他們是通過QQ認(rèn)識(shí)的。男孩子問女孩子備注,女孩子說“落箐”男孩子覺得很...
    余生的嬌妻閱讀 256評(píng)論 0 0
  • 第一章 振作起來吧,楠楠 時(shí)間過的很快,眼看蘇楠就從合租屋中搬出來一個(gè)月了。在此期間,她和老公之間,除了...
    夏之蜜雪閱讀 294評(píng)論 0 1