​【云知易】CCE云容器引擎 入门 02 之 制作镜像

举报
阅识风云 发表于 2017/11/01 15:49:38 2017/11/01
【摘要】 CCE为您提供了功能强大的Docker容器运行环境,您可以创建复杂的Docker容器应用。本指南以使用组件模板创建Guestbook应用为例,教您创建第一个容器应用。具体流程有如下五个部分:1、创建一个容器集群。2、编写应用代码并制作应用的Docker镜像。3、上传应用的Docker镜像到私有镜像仓库。4、创建组件模板。5、根据创建的组件模板创建应用。本篇是第二部分:制作镜像

未标题-1.jpg

制作镜像

本节介绍如何制作Guestbook应用中的三个镜像。

说明:

  • 本节以在Linux操作系统下的操作为例介绍制作镜像,其他操作系统下与此类似,用户可以根据实际情况制作。

  • 建议制作镜像和上传镜像在同一个操作系统中。

背景信息

Guestbook应用非常简单,代码逻辑全在Frontend组件内,Redis负责存储,只需要直接使用,从Frontend访问Redis即可。

Frontend需要读写Redis,为了解决组件间的通信问题,CCE使用服务名称代替IP地址,从而实现组件间的相互访问。

前提条件

  • 由于需要从DockerHub公共注册服务器的仓库中下载镜像,请制作镜像前确认已连接Internet

  • 制作Docker镜像的机器(虚拟机或是物理机都可以)需要安装Docker 1.10.0或以上版本。

执行如下命令查询Docker版本号。

docker version

系统显示如下:

155238rgkf5v02hqz8yzte.png

Version字段表示Docker的版本号。



    • Version后面显示1.10.0及以上,说明符合制作镜像的要求。

    • Version后面没有显示1.10.0及以上,请参考https://www.docker.com/下载并安装Docker

  • 若您未安装Docker,请在https://www.docker.com/中下载并安装Docker,安装指导请参见https://docs.docker.com/


制作Frontend组件镜像

Frontend组件的代码文件结构如下

155250vwlgjpyxu7fny0ec.png

为了保证组件之间的通信,需要在guestbook.php代码文件中需要配置“$host”的值,将两个“$host”分别设置为Redis_master组件的服务名称和Redis_slave组件的服务名称。

  • root用户登录到安装有Docker的服务器上。

说明:您也可以使用其他用户登录,但是该用户必须拥有执行Docker的权限。

2. 执行如下命令,新建用于存放Frontend组件文件的目录。

mkdir guestbook

cd guestbook

mkdir frontend

cd frontend

3. 执行如下命令,编写guestbook.php代码文件。

vi guestbook.php

guestbook.php文件的内容如下,其中,为了实现组件间的通信,在逻辑代码的基础上需要添加服务名(见如下加粗内容),redis-masterRedis_master组件的服务名,redis-slaveRedis_slave组件的服务名。CCE通过解析服务名,获取组件的IP地址,从而实现组件间的相互访问。

服务名称以小写字母、数字、横杠(-)组成,且以小写字母开头。

155547zdytuwf4vm5x6mdo.png

4.编写controllers.js脚本文件。

vi controllers.js

controller.js的内容如下。

155556oqbnpdiofymhrtfh.png

5.编写index.html文件。

vi index.html

index.html的内容如下。

1556071xiiocfcvba6d2nz.png

6.执行如下命令,编写Docke**le文件。

vi Dockerifle

dockerifle内容如下。

155619r6cvffgdzdsyrn8j.png

其中:

    • FROM语句:表示使用php:5-apache镜像作为基础。

    • RUN语句:表示使用apt-get命令来更新软件包列表和安装Predis

    • ADD语句:将本地代码文件添加到镜像中。

7.执行如下命令,在“frontend”目录下制作Frontend组件的镜像。

docker build -t frontend .

回显如下:

155628gnt0upzdobqdm0hp.png

15563533fzrrwqd6vl078x.png

回显中出现“Successfully built”表示镜像创建成功,执行docker images命令,可以查看到制作完成的镜像。

1624091nggvcpfifu8o91f.png

制作Redis_master组件镜像

Redis_master组件使用公共的redis镜像,从公共镜像库中下载redis镜像即可。

执行如下命令,下载redis镜像。

docker pull redis:3.0

回显如下:

1556552hy99c5zw3tkrwn7.png

回显中出现“Status: Downloaded newer image for redis:3.0”,表示redis镜像下载成功。

制作Redis-salve组件镜像

Redis-salve组件与Redis_master主备组成双机系统,需要在公共redis镜像的基础上增加主备设置。

  • 进入制作Frontend组件镜像步骤创建的guestbook文件夹,创建Redis_slave文件夹。

mkdir Redis_slave

cd Redis_slave

2.编写run.sh文件。

vi run.sh

run.sh内容如下。

155705beze7n0avn60tnpm.png

其中,redis-master是Redis_master组件的服务名称,6379是Redis默认使用的端口。

    3.编写Dockerifle文件。

vi Dockerife

dockerifle内容如下。

155715j2vrhufs1fmophgl.png

各条语句的含义如下:


    • FROM语句:表示基于redis镜像。

    • ADD语句:表示将本地的run.sh文件放到镜像中。

    • RUN语句:表示给所有用户写的run.sh赋予可执行权限。

    • CMD语句:表示容器启动后自动运行run.sh脚本。

4.执行如下命令,制作Redis_slave组件的镜像。

docker build -t redisslave .

回显如下:

155726icp1nlf0qhrrsegh.png

回显中出现“Successfully built”表示镜像创建成功,执行docker images命令,可以查看到制作完成的镜像。

155737i7eat2erbxffgtxp.png



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。