从零开始学K8s: 7.创建一个自己的镜像

1.创建一个简单的应用程序在安装好Docker后,现在让我们来创建一个简单的应用程序 。
我们先创建一个简单的Node.js Web应用,然后将它打包到镜像中 。该应用可以接受HTTP请求并返回主机名 。虽然应用进程和其他进程一样都是运行在宿主机上,但是在容器中运行的应用获取到的是它所在容器的主机名,而不是宿主机名 。
这个Node.js应用只有一个App.js一个文件 。
在~目录下执行如下命令:
mkdir test01cd test01vim app.js复制如下代码到app.js文件中:
const http = require('http');const os = require('os');console.log("开始运行...");var handler = function(request, response) {console.log("收到来自 " + request.connection.remoteAddress + "的消息");response.writeHead(200);response.end("已发送消息至: " + os.hostname() + "n");};var www = http.createServer(handler);www.listen(8080);

从零开始学K8s: 7.创建一个自己的镜像

文章插图
 
该程序会启动一个监听8080端口的HTTP服务 。当收到来自外界的消息后,请求处理器会记录并输出请求方的IP地址,然后给每一个请求返回状态码200以及一段包含主机名的文本 。
到这一步后,我们似乎可以下载并安装Node.js环境来直接测试这个应用程序了,但这就背离了本文的初衷了 。因为我们要学习的是使用Docker来将这个应用打包到容器镜像中,然后让它不需要下载和安装就可以在任何主机上执行,当然如果想运行这个镜像,主机还是需要准备好最基本的Docker环境 。
2.创建镜像的Dockerfile要想将应用程序打包的镜像里,首先得创建一个叫做Dockerfile的文件 。
在~/test01目录下执行如下命令:
touch Dockerfile这个文件就是一个指令清单,指示Docker在构建镜像时需要执行的命令 。Dockerfile需要和app.js文件在同一个目录下,而且应该包含如下命令:
FROM node:7ADD app.js /app.jsENTRYPOINT ["node", "app.js"]
从零开始学K8s: 7.创建一个自己的镜像

文章插图
 
FROM关键字所在的行定义了镜像构建过程所使用的基础镜像 。此处我们使用node镜像的tag7版本 。
第二行的作用是将app.js文件从本地目录添加到镜像的根目录下,并保持相同的文件名 。最后一行的作用是指定运行镜像的时候应该执行的命令 。本例中,这个命令是


    推荐阅读