成人免费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移動應用開發測試

2016-08-04 13:44:20

CentOS6.xNodejs解決方案

2011-06-15 18:38:17

Linux Qt Symbian

2020-07-20 18:30:44

Fedora 32DockerLinux

2024-01-04 11:50:00

UbuntuDocker

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

2012-04-28 08:43:12

CentOS

2013-09-03 10:10:00

人人網移動開發架構

2017-03-01 09:20:30

2018-02-26 08:14:20

LinuxDocker容器

2017-02-16 10:15:43

Windows7docker變量

2014-12-01 11:27:54

CentOS 7Docker

2016-11-08 09:02:07

UbuntuGrafanaDocker
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99re热精品视频 | 国产在线精品一区二区 | 美女在线国产 | 精品欧美一区二区三区久久久 | 91天堂网 | 国产精品s色 | 日韩精品免费在线观看 | 美女视频黄的免费 | 91在线精品秘密一区二区 | 日韩欧美一级 | 欧美黑人狂野猛交老妇 | 亚洲精品视频导航 | av片免费| 日本韩国欧美在线观看 | 在线免费观看a级片 | 免费在线成人 | 色综合久久久 | 污片在线观看 | 天天干视频 | 免费一看一级毛片 | 99综合在线 | 99久久精品国产一区二区三区 | 欧美激情精品久久久久 | 亚洲精品国产成人 | 欧美在线国产精品 | 中文二区 | 精品国产aⅴ | 国产成人精品一区二区三区在线 | 日韩精品成人一区二区三区视频 | 国产精品综合网 | 一区欧美 | 九九精品在线 | 国产不卡在线观看 | 日韩av成人 | 91精品国产自产在线老师啪 | 成人av免费播放 | 精品久 | 久久久女女女女999久久 | 亚洲va欧美va天堂v国产综合 | 伊人久操 | 欧美一级二级视频 |