使用Dockerfile构建kubia镜像

安装lrzsz:

yum install lrzsz -y

创建学习源码存放目录:

mkdir -p /k8sInAction/chpter2/kubia
cd /k8sInAction/chpter2/kubia

在上述目录下创建app.js

const http = require('http');
const os = require('os');

console.log("Kubia server starting...");

var handler = function(request, response) {
  console.log("Received request from " + request.connection.remoteAddress);
  response.writeHead(200);
  response.end("You've hit " + os.hostname() + "\n");
};

var www = http.createServer(handler);
www.listen(8080);

在对应目录创建Dockerfile文件:

FROM node:7
COPY app.js /app.js
ENTRYPOINT ["node", "app.js"]

在对应目录下执行命令创建新的镜像:

cd /k8sInAction/chpter2/kubia
docker build -t kubia .

构建成功会有如下提示信息:

Successfully built 9b79790a2e02
Successfully tagged kubia:latest

也可以通过如下命令查看镜像列表:

docker images | grep kubia

基于Dockerfile构建镜像流程

提示:不要在构建目录中包含任何不需要的文件, 这样会减慢构建的速度-尤其当Docker守护进程运行在一个远端机器的时候。

镜像分层

镜像不是一个大的二进制块, 而是由多层组成的, 不同镜像可能会共享分层, 这会让存储和传输变得更加高效。拉取镜像的时候,Docker 会独立下载每一层, 已经存储在机器上的分层, Docker不会再重新下载。容器镜像是由多层组成的, 每—层可以被不同镜像复用,如下图:

构建完成时,新的镜像会存储在本地。

运行容器

 docker run --name kubia-container -p 8080:8080 -d kubia

成功创建无报错,可以通过下述命令查看构建的容器:

docker ps -a | grep kubia-container

可以通过curl命令查看服务是否成功,如果没有curl命令,可以通过命令安装:

yum install -y curl

可以用如下命令发送请求:

curl localhost:8080
curl 127.0.0.1:8080
curl 宿主机IP:8080

如果正常会返回数值类似:You’ve hit a57486d9d56f

常用命令

获取所有容器命令:docker ps

查看容器详细信息:docker inspect 容器名或容器id,示例docker inspect kubia-container

进入容器:docker exec -it 容器名或容器id bash,示例docker exec -it kubia-container bash

停止容器:docker stop 容器名或容器id,示例docker stop kubia-container

删除容器:docker rm 容器名或容器id,示例docker rm kubia-container

使用附加标签标注镜像:docker tag 当前镜像名:tag 更新之后的镜像:tag,示例:docker tag kubia luksa/kubia

查看镜像:docker images | grep kubia

推送镜像:docker push luksa/kubia

删除镜像:docker rmi -f kubia

发表评论

电子邮件地址不会被公开。