登陆帐号 | 注册帐号
当前位置: 主页 >>开发频道 >>语言&工具 >>

Docker上开拓nodejs

时间:2017-05-18 21:23来源:互联网 作者:SKY 点击:
Docker 是一个开源项目,降生于 2013 年头,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 说话实现。 项目其后插手了 Linux 基金会,

Docker上开辟nodejs

Docker先容

Docker 是一个开源项目,降生于 2013 年头,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 说话实现。 项目其后插手了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub长举办维护。

Docker 项目标方针是实现轻量级的操纵体系假造化办理方案。 Docker 的基本是 Linux 容器(LXC)等技能。

在 LXC 的基本上 Docker 举办了进一步的封装,让用户不必要去体谅容器的打点,使得操纵更为轻盈。用户操纵 Docker 的容器就像操纵一个快速轻量级的假造机一样简朴。

下面的图片较量了 Docker 和传统假造化方法的差异之处,可见容器是在操纵体系层面上实现假造化,直接复用当田主机的操纵体系,而传统方法则是在硬件层面实现。

Docker上开辟nodejs

Docker上开辟nodejs

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 中将生涯用户的认证信息。

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

下载

按照是否是官方提供,可将镜像资源分为两类。 一种是相同 centos 这样的基本镜像,被称为基本或根镜像。这些基本镜像是由 Docker 公司建设、验证、支持、提供。这样的镜像每每行使单个单词作为名字。 尚有一种范例,好比 tianon/centos 镜像,它是由 Docker 的用户建设并维护的,时代站长网,每每带有效户名称前缀。可以通过前缀 user_name/ 来指定行使某个用户提供的镜像,好比 tianon 用户。

docker pull apline 

 

// or 

 

docker pull mhart/alpine-node-auto  

提交

修改当前镜像之后必要提交修改后的镜像,修改一次镜像包罗提交的进程如下:

先行使下载的镜像启动容器。

docker run -t -i training/sinatra /bin/bash 

 

root@0b2616b0e5a8:/#  

留意:记着容器的 ID,稍后还会用到。在容器中添加 json package(一个 ruby gem)。

root@0b2616b0e5a8:/# gem install json 

当竣事后,我们行使 exit 来退出,此刻我们的容器已经被我们改变了,行使 docker commit 呼吁来提交更新后的副本。

docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 

 

4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c  

个中,-m 来指定提交的声名信息,跟我们行使的版本节制器材一样;-a 可以指定更新的用户信息;之后是用来建设镜像的容器的 ID;最后指定方针镜像的客栈名和 tag 信息。建设乐成后会返回这个镜像的 ID 信息。

行使 docker images 来查察新建设的镜像。

之后,可以行使新的镜像来启动容器

$ docker run -t -i ouruser/sinatra:v2 /bin/bash 

 

root@78e82f680994:/#  

上传

用户可以通过 docker push 呼吁,把本身建设的镜像上传到客栈中来共享。譬喻,用户在 Docker Hub 上完成注册后,可以推送本身的镜像到客栈中。

$ docker push ouruser/sinatra 

 

The push refers to a repository [ouruser/sinatra] (len: 1) 

 

Sending image list 

 

Pushing repository ouruser/sinatra (3 tags)  

修改镜像的标签

用 docker tag 呼吁来修改镜像的标签。

$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel 

 

$ sudo docker images ouruser/sinatra 

 

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 

 

ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 MB 

 

ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB 

 

ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB  

操作 Dockerfile 来建设镜像

行使 docker commit 来扩展一个镜像较量简朴,可是不利便在一个团队平分享。我们可以行使 docker build 来建设一个新的镜像。为此,起首必要建设一个 Dockerfile,包括一些怎样建设镜像的指令。

Dockerfile 中每一条指令都建设镜像的一层,譬喻:

# Dockerfile.alpine 

 

FROM mhart/alpine-node:latest 

 

MAINTAINER zhanfang "fzhanxd@gmail.com" 

 

# If you have native dependencies, you'll need extra tools 

 

# RUN apk add --no-cache make gcc g++ python 

 

Create app directory 

 

RUN mkdir -p /usr/src/app 

 

WORKDIR /usr/src/app 

 

(责任编辑:SKY)
织梦二维码生成器
------分隔线----------------------------
栏目列表
推荐内容