|
|
51CTO旗下网站
|
|
移动端

2.3.4.1 构建容器镜像

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍构建容器镜像。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-12 17:35

2.3.4.1 构建容器镜像

在发布之前,需要将应用程序打包成容器镜像,不同的操作系统,Dockerfile 脚本的写法也不一样,本章继续以上一章节的NodeJS 项目为例,将其改造成Docker 镜像,因为Windows 容器目前刚发布不久,尚处于预览版状态,所以接下来只展示如何生成Linux 的镜像。关于Windows 容器镜像的制作,请参考Windows Server Container 官方文档了解。

修改之前的NodeJS 项目中,在NodeJSServicePkg 下的Code 目录中添加Dockerfile 文件,在里面定义安装NodeJS 和启动服务的命令。这里注意使用的是3000 端口。

  1. FROM ubuntu:16.04  
  2. LABEL Description="Guest executable on Service Fabric in a Docker container"  
  3. Vendor="self" Version="1.0.0"  
  4. ADD App.js /  
  5. RUN \  
  6. apt-get update && \  
  7. apt-get install -y nodejs && \  
  8. ln -s /usr/bin/nodejs /usr/bin/node  
  9. EXPOSE 3000  
  10. ENTRYPOINT ["node", "/App.js"] 

Dockerfile 是Docker 镜像的描述文件,该文件是由一条条指令构成,Docker 程序将读取该文件,并执行指令生成定制化的镜像,借助DockerHub 就可以发布自己自定义的镜像。具体可参考Docker 官方网站的文档。在编写完Dockerfile 之后,可以借助docker build 命令在本地编译测试镜像。

  1. docker build -t node-App ./test-sf-node-App 

当编译成功后,使用docker images 命令查看镜像是否生成成功。

  1. docker images 

之后,就可以借助此镜像在本地创建该服务。使用命令启动容器docker run -d -p3000:3000 7535898f9da4,其中7535898f9da4 指的镜像ID,当启动成功后可以查看容器的运行状况。也可以通过http://localhost:3000 访问在容器运行的NodeJS 服务。

当测试本地镜像成功后,就可以将其发布到公共的Docker Hub 或者私有的Hub。这里以Docker Hub 为例简单介绍下如何发布容器镜像。

首先,需要在Docker Hub(https://hub.docker.com )上注册账户,之后使用docker login命令登录Docker Hub。

  1. docker login --username=<your user name>--password=<your password> 

之后,使用docker tag 命令为本地nodeApp 镜像创建标签,tag 的功能和代码版本管理的tag 功能类似,主要为镜像的状态打上一个戳,以便对镜像版本进行管理。

  1. docker tag 7535898f9da4 <your namespace>/node-App:latest 

最后,需要将该NodeJS 应用镜像push 到Docker Hub 中,以便后续在Service Fabric的容器应用的服务配置时引用,就是本地上传信息。

  1. docker push <your namespace>/node-App:latest 

当上传完成后,可以通过Docker Hub 的仓库(Repositories)页面浏览已发布的镜像,如图2.3.4-2 所示。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

安全模式:J2EE、Web服务和身份管理最佳实践与策

本书全面阐述Java应用安全的基本知识并介绍一种强大的结构化安全设计方法;介绍独立于厂商的安全架构;列出详细的评估核对表以及23种经过实...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊