成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Docker上開發nodejs

開發 前端
Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 GitHub上進行維護。

Docker介紹

Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 GitHub上進行維護。

Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。

在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。

下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。 

 

 

Docker的優勢

作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢。

首先,Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多。 其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。

容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。

我理解的Docker

目前,我在使用docker的過程中基本上是本地開發好項目之后,生成dist文件目錄,遷移到docker當中,相當于只在生產環境開發使用docker,原因主要有以下幾點:

在開發環境使用docker感覺還是不是很舒服,每次修改都要重新build,以及run,比較麻煩,本地開發更加舒服;

docker實際上可以看做是一個封閉的盒子,想做一些查看和操作還是有點麻煩的的,交互性不是很好,感覺比較適合生產環境。

Docker hub介紹

目前 Docker 官方維護了一個公共倉庫 Docker Hub,其中已經包括了超過 15,000 的鏡像,大部分需求,都可以通過在 Docker Hub 中直接下載鏡像來實現。

登陸

可以通過執行 docker login 命令來輸入用戶名、密碼和郵箱來完成注冊和登錄。 注冊成功后,本地用戶目錄的 .dockercfg 中將保存用戶的認證信息。

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

下載

根據是否是官方提供,可將鏡像資源分為兩類。 一種是類似 centos 這樣的基礎鏡像,被稱為基礎或根鏡像。這些基礎鏡像是由 Docker 公司創建、驗證、支持、提供。這樣的鏡像往往使用單個單詞作為名字。 還有一種類型,比如 tianon/centos 鏡像,它是由 Docker 的用戶創建并維護的,往往帶有用戶名稱前綴。可以通過前綴 user_name/ 來指定使用某個用戶提供的鏡像,比如 tianon 用戶。

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

提交

修改當前鏡像之后需要提交修改后的鏡像,修改一次鏡像包括提交的過程如下:

先使用下載的鏡像啟動容器。

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

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

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

當結束后,我們使用 exit 來退出,現在我們的容器已經被我們改變了,使用 docker commit 命令來提交更新后的副本。

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

其中,-m 來指定提交的說明信息,跟我們使用的版本控制工具一樣;-a 可以指定更新的用戶信息;之后是用來創建鏡像的容器的 ID;***指定目標鏡像的倉庫名和 tag 信息。創建成功后會返回這個鏡像的 ID 信息。

使用 docker images 來查看新創建的鏡像。

之后,可以使用新的鏡像來啟動容器

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

上傳

用戶可以通過 docker push 命令,把自己創建的鏡像上傳到倉庫中來共享。例如,用戶在 Docker Hub 上完成注冊后,可以推送自己的鏡像到倉庫中。

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

修改鏡像的標簽

用 docker tag 命令來修改鏡像的標簽。

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

利用 Dockerfile 來創建鏡像

使用 docker commit 來擴展一個鏡像比較簡單,但是不方便在一個團隊中分享。我們可以使用 docker build 來創建一個新的鏡像。為此,首先需要創建一個 Dockerfile,包含一些如何創建鏡像的指令。

Dockerfile 中每一條指令都創建鏡像的一層,例如:

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

編寫完成 Dockerfile 后可以使用 docker build 來生成鏡像。

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

其中 -t 標記來添加 tag,指定新的鏡像的用戶信息。 “.” 是 Dockerfile 所在的路徑(當前目錄),也可以替換為一個具體的 Dockerfile 的路徑。

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

注意一個鏡像不能超過 127 層

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

以alpine-node-auto鏡像為基礎

1. 下載基礎鏡像

  1. docker pull mhart/alpine-node-auto 

2. 編寫dockerfile

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

3. 創建新的鏡像

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

打上 alpine-koa2-startkit:v1 的 tag

4. 運行一個容器實例

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

5. 上傳鏡像(如果沒有登錄請登陸,使用login命令) 

  1. docker push zhanfang/alpine-koa2-startkit 

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2014-07-29 10:35:21

DockerNodeJS

2014-08-25 12:14:02

Docker協助開發

2014-04-18 10:04:15

NodeJS前后端分離

2016-12-28 11:18:10

NodeJSJava開發者

2015-02-06 11:04:10

DockerAWS移動應用開發測試

2011-06-15 18:38:17

Linux Qt Symbian

2016-08-04 13:44:20

CentOS6.xNodejs解決方案

2024-10-06 13:47:43

后端開發者項目

2022-06-28 15:04:32

容器Docker

2016-09-20 21:32:16

DockerLinux Names

2023-11-09 16:13:53

2020-07-20 18:30:44

Fedora 32DockerLinux

2024-01-04 11:50:00

UbuntuDocker

2012-04-28 08:43:12

CentOS

2013-09-03 10:10:00

人人網移動開發架構

2017-03-01 09:20:30

2014-12-01 11:27:54

CentOS 7Docker

2016-11-08 09:02:07

UbuntuGrafanaDocker

2018-02-26 08:14:20

LinuxDocker容器

2017-02-16 10:15:43

Windows7docker變量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲69p| 91精品国产91久久久久久密臀 | 久久人人爽人人爽人人片av免费 | 九七午夜剧场福利写真 | 中文字幕一区二区三区精彩视频 | 在线观看av网站 | 欧美一级免费 | 精品日本中文字幕 | 亚洲欧美视频在线观看 | 国产无套一区二区三区久久 | 国产目拍亚洲精品99久久精品 | 亚洲精品久久 | 日韩在线观看一区 | 日本黄色激情视频 | 久久久xx| 男人的天堂视频网站 | 亚洲有码转帖 | 日本不卡免费新一二三区 | 天天操天天舔 | xnxx 日本免费 | 国产9999精品 | av手机在线播放 | 久久久久久国产精品免费免费男同 | jdav视频在线观看免费 | 午夜影院在线视频 | 亚洲视频在线一区 | 亚洲国产精品视频一区 | www.黄色网 | 久久美女网 | 天天色天天射天天干 | 日韩精品视频在线 | 欧美精品一区二区三 | 亚洲视屏 | 欧美日韩国产一区二区三区 | 日本黄色免费视频 | 色视频网站在线观看 | 中文字幕免费 | 在线观看视频中文字幕 | 国产不卡视频在线 | av一区二区三区四区 | 国产精品久久久久久久白浊 |