日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Docker上開(kāi)發(fā)nodejs

Docker介紹

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到寶塔網(wǎng)站設(shè)計(jì)與寶塔網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋寶塔地區(qū)。

Docker 是一個(gè)開(kāi)源項(xiàng)目,誕生于 2013 年初,最初是 dotCloud 公司內(nèi)部的一個(gè)業(yè)余項(xiàng)目。它基于 Google 公司推出的 Go 語(yǔ)言實(shí)現(xiàn)。 項(xiàng)目后來(lái)加入了 Linux 基金會(huì),遵從了 Apache 2.0 協(xié)議,項(xiàng)目代碼在 GitHub上進(jìn)行維護(hù)。

Docker 項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。 Docker 的基礎(chǔ)是 Linux 容器(LXC)等技術(shù)。

在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝,讓用戶(hù)不需要去關(guān)心容器的管理,使得操作更為簡(jiǎn)便。用戶(hù)操作 Docker 的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單。

下面的圖片比較了 Docker 和傳統(tǒng)虛擬化方式的不同之處,可見(jiàn)容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地主機(jī)的操作系統(tǒng),而傳統(tǒng)方式則是在硬件層面實(shí)現(xiàn)。

Docker的優(yōu)勢(shì)

作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢(shì)。

首先,Docker 容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。 其次,Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。

容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開(kāi)銷(xiāo)盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行 10 個(gè)不同的應(yīng)用就要起 10 個(gè)虛擬機(jī),而Docker 只需要啟動(dòng) 10 個(gè)隔離的應(yīng)用即可。

我理解的Docker

目前,我在使用docker的過(guò)程中基本上是本地開(kāi)發(fā)好項(xiàng)目之后,生成dist文件目錄,遷移到docker當(dāng)中,相當(dāng)于只在生產(chǎn)環(huán)境開(kāi)發(fā)使用docker,原因主要有以下幾點(diǎn):

在開(kāi)發(fā)環(huán)境使用docker感覺(jué)還是不是很舒服,每次修改都要重新build,以及run,比較麻煩,本地開(kāi)發(fā)更加舒服;

docker實(shí)際上可以看做是一個(gè)封閉的盒子,想做一些查看和操作還是有點(diǎn)麻煩的的,交互性不是很好,感覺(jué)比較適合生產(chǎn)環(huán)境。

Docker hub介紹

目前 Docker 官方維護(hù)了一個(gè)公共倉(cāng)庫(kù) Docker Hub,其中已經(jīng)包括了超過(guò) 15,000 的鏡像,大部分需求,都可以通過(guò)在 Docker Hub 中直接下載鏡像來(lái)實(shí)現(xiàn)。

登陸

可以通過(guò)執(zhí)行 docker login 命令來(lái)輸入用戶(hù)名、密碼和郵箱來(lái)完成注冊(cè)和登錄。 注冊(cè)成功后,本地用戶(hù)目錄的 .dockercfg 中將保存用戶(hù)的認(rèn)證信息。

 
 
  1. docker login --username=username --email=email@gmail.com

下載

根據(jù)是否是官方提供,可將鏡像資源分為兩類(lèi)。 一種是類(lèi)似 centos 這樣的基礎(chǔ)鏡像,被稱(chēng)為基礎(chǔ)或根鏡像。這些基礎(chǔ)鏡像是由 Docker 公司創(chuàng)建、驗(yàn)證、支持、提供。這樣的鏡像往往使用單個(gè)單詞作為名字。 還有一種類(lèi)型,比如 tianon/centos 鏡像,它是由 Docker 的用戶(hù)創(chuàng)建并維護(hù)的,往往帶有用戶(hù)名稱(chēng)前綴??梢酝ㄟ^(guò)前綴 user_name/ 來(lái)指定使用某個(gè)用戶(hù)提供的鏡像,比如 tianon 用戶(hù)。

 
 
  1. docker pull apline
  2. // or
  3. docker pull mhart/alpine-node-auto 

提交

修改當(dāng)前鏡像之后需要提交修改后的鏡像,修改一次鏡像包括提交的過(guò)程如下:

先使用下載的鏡像啟動(dòng)容器。

 
 
  1. docker run -t -i training/sinatra /bin/bash
  2. root@0b2616b0e5a8:/# 

注意:記住容器的 ID,稍后還會(huì)用到。在容器中添加 json package(一個(gè) ruby gem)。

 
 
  1. root@0b2616b0e5a8:/# gem install json

當(dāng)結(jié)束后,我們使用 exit 來(lái)退出,現(xiàn)在我們的容器已經(jīng)被我們改變了,使用 docker commit 命令來(lái)提交更新后的副本。

 
 
  1. docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
  2. 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c 

其中,-m 來(lái)指定提交的說(shuō)明信息,跟我們使用的版本控制工具一樣;-a 可以指定更新的用戶(hù)信息;之后是用來(lái)創(chuàng)建鏡像的容器的 ID;***指定目標(biāo)鏡像的倉(cāng)庫(kù)名和 tag 信息。創(chuàng)建成功后會(huì)返回這個(gè)鏡像的 ID 信息。

使用 docker images 來(lái)查看新創(chuàng)建的鏡像。

之后,可以使用新的鏡像來(lái)啟動(dòng)容器

 
 
  1. $ docker run -t -i ouruser/sinatra:v2 /bin/bash
  2. root@78e82f680994:/# 

上傳

用戶(hù)可以通過(guò) docker push 命令,把自己創(chuàng)建的鏡像上傳到倉(cāng)庫(kù)中來(lái)共享。例如,用戶(hù)在 Docker Hub 上完成注冊(cè)后,可以推送自己的鏡像到倉(cāng)庫(kù)中。

 
 
  1. $ docker push ouruser/sinatra
  2. The push refers to a repository [ouruser/sinatra] (len: 1)
  3. Sending image list
  4. Pushing repository ouruser/sinatra (3 tags) 

修改鏡像的標(biāo)簽

用 docker tag 命令來(lái)修改鏡像的標(biāo)簽。

 
 
  1. $ sudo docker tag 5db5f8471261 ouruser/sinatra:devel
  2. $ sudo docker images ouruser/sinatra
  3. REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  4. ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 MB
  5. ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB
  6. ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB 

利用 Dockerfile 來(lái)創(chuàng)建鏡像

使用 docker commit 來(lái)擴(kuò)展一個(gè)鏡像比較簡(jiǎn)單,但是不方便在一個(gè)團(tuán)隊(duì)中分享。我們可以使用 docker build 來(lái)創(chuàng)建一個(gè)新的鏡像。為此,首先需要?jiǎng)?chuàng)建一個(gè) Dockerfile,包含一些如何創(chuàng)建鏡像的指令。

Dockerfile 中每一條指令都創(chuàng)建鏡像的一層,例如:

 
 
  1. # Dockerfile.alpine
  2. FROM mhart/alpine-node:latest
  3. MAINTAINER zhanfang "fzhanxd@gmail.com"
  4. # If you have native dependencies, you'll need extra tools
  5. # RUN apk add --no-cache make gcc g++ python
  6. # Create app directory
  7. RUN mkdir -p /usr/src/app
  8. WORKDIR /usr/src/app
  9. # If your project depends on many package, you can use cnpm instead of npm
  10. # RUN npm install cnpm -g --registry=https://registry.npm.taobao.org
  11. # Install app dependencies
  12. COPY package.json /usr/src/app/
  13. RUN npm install --registry=https://registry.npm.taobao.org
  14. # Bundle app source
  15. COPY . /usr/src/app
  16. # Expose port
  17. EXPOSE 3000
  18. CMD [ "npm", "start" ] 

編寫(xiě)完成 Dockerfile 后可以使用 docker build 來(lái)生成鏡像。

 
 
  1. docker build -t alpine-koa2-startkit .

其中 -t 標(biāo)記來(lái)添加 tag,指定新的鏡像的用戶(hù)信息。 “.” 是 Dockerfile 所在的路徑(當(dāng)前目錄),也可以替換為一個(gè)具體的 Dockerfile 的路徑。

Dockfile 中的指令被一條一條的執(zhí)行。每一步都創(chuàng)建了一個(gè)新的容器,在容器中執(zhí)行指令并提交修改(就跟之前介紹過(guò)的 docker commit 一樣)。當(dāng)所有的指令都執(zhí)行完畢之后,返回了最終的鏡像 id。所有的中間步驟所產(chǎn)生的容器都被刪除和清理了。

注意一個(gè)鏡像不能超過(guò) 127 層

完成一次鏡像的下載、修改和上傳

以alpine-node-auto鏡像為基礎(chǔ)

1. 下載基礎(chǔ)鏡像

 
 
  1. docker pull mhart/alpine-node-auto

2. 編寫(xiě)dockerfile

 
 
  1. # Dockerfile.alpine
  2. FROM mhart/alpine-node:latest
  3. MAINTAINER zhanfang "fzhanxd@gmail.com"
  4. # If you have native dependencies, you'll need extra tools
  5. # RUN apk add --no-cache make gcc g++ python
  6. # Create app directory
  7. RUN mkdir -p /usr/src/app
  8. WORKDIR /usr/src/app
  9. # If your project depends on many package, you can use cnpm instead of npm
  10. # RUN npm install cnpm -g --registry=https://registry.npm.taobao.org
  11. # Install app dependencies
  12. COPY package.json /usr/src/app/
  13. RUN npm install --registry=https://registry.npm.taobao.org
  14. # Bundle app source
  15. COPY . /usr/src/app
  16. # Expose port
  17. EXPOSE 3000
  18. CMD [ "npm", "start" ] 

3. 創(chuàng)建新的鏡像

 
 
  1. docker build -t=zhanfang/alpine-koa2-startkit:v1" .

打上 alpine-koa2-startkit:v1 的 tag

4. 運(yùn)行一個(gè)容器實(shí)例

 
 
  1. docker run -t -i --name alpine-koa2-application zhanfang/alpine-koa2-startkit:v2

5. 上傳鏡像(如果沒(méi)有登錄請(qǐng)登陸,使用login命令)

 
 
  1. docker push zhanfang/alpine-koa2-startkit

分享文章:Docker上開(kāi)發(fā)nodejs
本文網(wǎng)址:http://m.5511xx.com/article/coppdph.html