国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[afterCode] docker 速成班 4: 自建 Image

Charles / 474人閱讀

摘要:通過(guò)能獲得很多別人定制好的但是如果自己想制作一個(gè)自己容器該怎么弄呢用就像一個(gè)腳本文件告訴如何創(chuàng)建一個(gè)新的下面舉例來(lái)用來(lái)制作一個(gè)服務(wù)器的指令剛才提到了社區(qū)已經(jīng)有很多很好用的那我們要構(gòu)建自己的的話就可以在這些的基礎(chǔ)上來(lái)做我們要做一個(gè)基于的服務(wù)器

通過(guò) docker hub 能獲得很多別人定制好的image, 但是如果自己想制作一個(gè)自己容器該怎么弄呢?

用 Dockerfile

Dockerfile 就像一個(gè)腳本文件, 告訴 docker 如何創(chuàng)建一個(gè)新的 Image.
下面舉例來(lái)用 node.js 來(lái)制作一個(gè) http 服務(wù)器的 image.

FROM 指令

剛才提到了社區(qū)已經(jīng)有很多很好用的 docker images, 那我們要構(gòu)建自己的 iamge 的話就可以在這些 image 的基礎(chǔ)上來(lái)做. 我們要做一個(gè)基于 node.js 的 http 服務(wù)器, 那首先就是找一個(gè)已經(jīng)安裝好 node.js 的 image, docker hub 已經(jīng)有了 node.js 官方 images 了, 直接利用這些資源就可以了. 利用的方式就是使用 FROM 指令.

// Dockerfile
FROM node:8.5

通過(guò) FROM 來(lái)指定 node.js 的版本和拉取 image 的格式一樣. 如果你需要依賴的 image 是社區(qū)版本的話,要寫(xiě)上對(duì)應(yīng)的 namespace 名字.

COPY 指令

有了 node.js 之后我們要寫(xiě)一個(gè) http 服務(wù)器. 直接新建一個(gè) index.js 文件, 使用 node.js 官方 hello world 的例子.

// index.js
// ref https://nodejs.org/en/about/
const http = require("http");
const hostname = "127.0.0.1";
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader("Content-Type", "text/plain");
  res.end("Hello World
");
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

有了這個(gè)服務(wù)器代碼之后, 就要將這個(gè) index.js 文件從我們的主機(jī)上用 COPY 指令拷貝到容器中.這個(gè)語(yǔ)法和我們平時(shí)使用cp的格式非常類似,要注意的是容器中的地址采用絕對(duì)地址.

// Dockerfile
FROM node:8.5
COPY  index.js /root/index.js
CMD 指令

為了讓我們的http 服務(wù)器啟動(dòng)起來(lái)就用 CMD 在容器中執(zhí)行的命令.

// Dockerfile
FROM node:8.5
COPY  index.js /root/index.js
CMD node /root/index.js

在容易中執(zhí)行 node /root/index.js 這樣我們的 http 服務(wù)就在容器中啟動(dòng)了

EXPOSE 指令

雖然啟動(dòng)了服務(wù), 也只是在容器內(nèi)部自 high; 為了能讓服務(wù)能在容易意外被使用,就要將服務(wù)端口暴露出去.

// Dockerfile
FROM node:8.5
COPY  index.js /root/index.js
EXPOSE 3000
CMD node /root/index.js

這里需要注意的是, 要把 EXPOSE 放在服務(wù)啟動(dòng)之前. 不然端口的暴露就會(huì)有問(wèn)題. 別問(wèn)我為什么會(huì)知道,說(shuō)多了都是淚.

最后一步構(gòu)建

到這里我們的 Dockefile 就完成了,但是我們 image 文件在哪里啊.當(dāng)讓是要通過(guò) docker 的 build 命令構(gòu)建出來(lái)咯.這里的-t 選項(xiàng)告訴 docker 這生成出來(lái)的 image 的 tag 是什么. 我們自己的做的 image 屬于是社區(qū)的 image 記得在 image 名字前面加上自己的 namespace.

docker build . -t pshu/helloWorld:1.0.0

docker 就會(huì)先去 docker hub 拉取 node.js 的鏡像, 然后按照 Dockerfile 中的

Step 1/4 : FROM node:8.5
8.5: Pulling from library/node
aa18ad1a0d33: Pull complete
15a33158a136: Pull complete
f67323742a64: Pull complete
c4b45e832c38: Pull complete
f83e14495c19: Pull complete
41fea39113bf: Pull complete
f28b27a3711e: Pull complete
2079c2e3f89a: Pull complete
Digest: sha256:27e459456c552642c520a36f934b0e1646043d43877a5e018e9bb3f251d2ef76
Status: Downloaded newer image for node:8.5
 ---> de1099630c13
Step 2/4 : COPY index.js /root/index.js
 ---> 947429cca879
Removing intermediate container 1f813f1cbf71
Step 3/4 : CMD node index.js
 ---> Running in 17425d436856
 ---> c720248bb068
Removing intermediate container 17425d436856
Step 4/4 : EXPOSE 3000
 ---> Running in d1b924412684
 ---> 969f16cac45d
Removing intermediate container d1b924412684
Successfully built 969f16cac45d
Successfully tagged pshu/helloworld:1.0.0

docker build 完成就能看見(jiàn)自己的 image 了.

$docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
pshu/helloworld        1.0.0               969f16cac45d        31 seconds ago      673MB

接著我們之只要用 docker run 命令就能把這個(gè) image 跑起來(lái)了.

docker run --rm -i -p 3000:3000 pshu/helloworld:1.0.0

本地的3000端口就能訪問(wèn)到這個(gè) hello world 的 http 服務(wù)了.

希望大家喜歡.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27081.html

相關(guān)文章

  • [afterCode] docker 成班 1: image

    摘要:在程序員英語(yǔ)娛樂(lè)主題節(jié)目的直播中介紹了下在網(wǎng)站學(xué)習(xí)的視頻由于時(shí)間倉(cāng)促只學(xué)習(xí)了一部分最近因?yàn)榈墓镜脑蛞矝](méi)有時(shí)間繼續(xù)搞直播所以想寫(xiě)一篇分享下自己的的學(xué)習(xí)經(jīng)驗(yàn)想學(xué)習(xí)簡(jiǎn)短有效的風(fēng)格所以就將文章題目定為速成班準(zhǔn)備本地已經(jīng)安裝好了現(xiàn)在各個(gè)操作系統(tǒng)上 在程序員英語(yǔ)娛樂(lè)主題節(jié)目http://www.douyu.com/aftercode的直播中介紹了下在 egghead 網(wǎng)站學(xué)習(xí) docker 的...

    waltr 評(píng)論0 收藏0
  • [afterCode] docker 成班 2: container

    摘要:本來(lái)想在一篇里面就寫(xiě)完所有的內(nèi)容的但是考慮考慮到文章太長(zhǎng)會(huì)和風(fēng)格相背離所以就按連載的形式來(lái)容器是物質(zhì)基礎(chǔ)有了這個(gè)才能讓能運(yùn)行起來(lái)運(yùn)行起來(lái)的稱之為容器它使用中的一等公民直接啟動(dòng)使用啟動(dòng)一個(gè)容器如果你沒(méi)有下載過(guò)的話會(huì)自動(dòng)下載一個(gè)的指定方法和刪除 本來(lái)想在一篇 blog 里面就寫(xiě)完所有的內(nèi)容的,但是考慮考慮到文章太長(zhǎng)會(huì)和 egghead 風(fēng)格相背離,所以就按連載的形式來(lái). 容器 contai...

    stormjun 評(píng)論0 收藏0
  • [afterCode] docker 成班 6: docker-compose

    摘要:通過(guò)的我們可以將多個(gè)有機(jī)的組合起來(lái)構(gòu)建出自己需要的服務(wù)但是這里有幾個(gè)小問(wèn)題就是不利于分享步驟麻煩需要自己創(chuàng)建指定使用那如何解決上面的兩個(gè)問(wèn)題呢第節(jié)例子中的服務(wù)可以通過(guò)創(chuàng)建一個(gè)這樣的文件來(lái)解決通過(guò)下面的命令就能將所有需要的啟動(dòng)起來(lái) 通過(guò)docker 的 network我們可以將多個(gè) container 有機(jī)的組合起來(lái)構(gòu)建出自己需要的服務(wù). 但是這里有幾個(gè)小問(wèn)題就是 不利于分享. 步驟麻...

    Integ 評(píng)論0 收藏0
  • [afterCode] docker 成班 5: 組合 container

    摘要:到現(xiàn)在為止我們會(huì)從拉取自己需要的文件并執(zhí)行起來(lái)還會(huì)基于已有的來(lái)制作自己特殊需要的但是如果我們完成一個(gè)功能需要多個(gè)組合起來(lái)使用該怎么辦呢雖然可以通過(guò)來(lái)制作一個(gè)這樣的但是如果所有的功能都做在一個(gè)中如果有一個(gè)模塊需呀改變的話就需要重新構(gòu)建整個(gè)作為 到現(xiàn)在為止,我們會(huì)從 docker hub 拉取自己需要的 image 文件并執(zhí)行起來(lái). 還會(huì)基于已有的 image 來(lái)制作自己特殊需要的 ima...

    neuSnail 評(píng)論0 收藏0
  • [afterCode] docker 成班 7: 實(shí)戰(zhàn) 構(gòu)建基于graphtie/grafana監(jiān)

    摘要:由于公司沒(méi)有運(yùn)維又需要監(jiān)控服務(wù)器的一些數(shù)據(jù)信息想盡快的啟動(dòng)一個(gè)數(shù)值監(jiān)控系統(tǒng)技術(shù)評(píng)估了下打算的方式來(lái)建設(shè)是一個(gè)時(shí)間數(shù)列數(shù)據(jù)庫(kù)并且自帶一些簡(jiǎn)單圖形展示功能雖然展示方面不是很完美但是在收集時(shí)間數(shù)據(jù)上非常的方便和簡(jiǎn)單根據(jù)官網(wǎng)的例子只需要一個(gè)連接就能 由于公司沒(méi)有運(yùn)維, 又需要監(jiān)控服務(wù)器的一些數(shù)據(jù)信息, 想盡快的啟動(dòng)一個(gè)數(shù)值監(jiān)控系統(tǒng). 技術(shù)評(píng)估了下打算 graphite + grafana 的...

    jhhfft 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<