云原生容器Clouder认证:基于容器搭建企业级应用—课时5:制作容器镜像

简介: 云原生容器Clouder认证:基于容器搭建企业级应用—课时5:制作容器镜像

思考:用容器搭建应用主要有哪些步骤?

初步学习了容器相关知识后,小陈准备开始搭建公司网站。为了少走弯路,还是打算找大刘请教一下。

小陈:师傅,我快速的学习了容器和Docker基础知识,现在就要开始搭建我们公司的网站了。我看了下,用容器来跑公司网站,过程不很复杂,对吧?

大刘:用容器运行应用就是简单、易用。你知道用容器搭建应用主要有哪几步?

小陈:应该是用 docker run 一个镜像吧。

大刘:那么镜像从哪儿来呢?比如,我们的公司网站,原本只是一些代码,还不是镜像文件,怎么把代码、运行环境等打包在一起变成镜像呢?

小陈:还没了解到。请师傅赐教!

大刘:搭建并运行应用,包含三个重要过程,分别是构建、发布和运行:1)构建就是把应用程序和运行环境打包成镜像。2)发布就是把镜像文件发布到镜像仓库,表示可以用来运行了。3)运行,就是获取已发布的镜像,运行成容器。构建、发布和运行,与docker中的build、ship、run其实是一个意思。

小陈:明白了。师傅,我这次搭建,也走构建、发布、运行的搭建过程吧?

大刘:嗯。这就开干吧,遇到什么问题,随时来找我。


采用容器技术搭建并运行企业网站,需要经历三个主要过程:

  • 构建(build):把应用代码和运行环境一起,制作成镜像文件
  • 发布(release):将镜像文件发布到镜像仓库。
  • 运行(run):从镜像仓库中获取镜像并运行。

 

容器镜像如何构建


将WordPress应用制作成容器镜像

Docker镜像制作通常有两种方式:

  1. 基于docker commit 制作镜像。
  2. 基于Dockerfile制作镜像,为主流镜像的制作方式。

小陈对构建应用镜像的两种方式,还没有概念,到底选择哪种呢?

小陈:师傅,构建镜像有 docker commit 和 Dockerfile 两种方式,哪种更好呢?

大刘:问得好。docker commit 是通过命令直接构建镜像,只有构建者才知道构建的过程,构建过程难以重现。用Dockerfile构建镜像,则是把构建过程的每个步骤都写到脚本中,通过 docker build 执行脚本的方式来构建镜像,这样做的好处是,整个过程都是可见的、清晰的。应用的构建属于软件工程的一部分,都要追求过程可控、可查、可重现。这么说,你觉得应该用哪种方式更合适?

小陈:清楚了。构建镜像的工作是团队工作的一部分,理应透明可控,需要用Dockerfile来构建。谢谢师傅!


Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。我们可以理解Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序读取Dockerfile,解决这些命令间的依赖关系,根据指令生成定制的镜像。

相比镜像这种黑盒子,Dockerfile这种显而易见的脚本更容易被开发者接受,它明确的表明镜像是怎么产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成镜像即可,省去了敲命令的麻烦。

Dockerfile文件的编写需要遵循相应的要求和规范,Docker官方提供了相应的说明和指导,如果您想学习这方面的知识,建议可以参考Docker官方文档:Dockerfile参考

基于Dockfile构建镜像并运行,会经历如下过程:

其中Dockerfile、Image、Container的关系如下:

  • Dockerfile是软件开发的基础
  • Docker镜像(Image)是软件的交付品
  • Docker容器(Container)则可以认为是软件的运行态
  • Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署、运行与运维,三者共同构成了 Docker 技术的底座。

 

构建网站应用镜像的步骤

明白以上原理之后,我们知道构建网站应用的WordPress镜像之前,需要先编写好Dockerfile文件。在本次课程中为了验证快速搭建网站,所以使用Docker官方镜像提供的WordPress的Dockerfile文件。

整体步骤如下(具体操作会在实验环节中呈现)

1、创建WordPress镜像制作目录。


# 创建WordPress镜像制作目录makeWordpress并进入该目录
mkdir -p /makeWordpress
cd /makeWordpress


2、下载Dockerfile文件和docker-entrypoint.sh预处理脚本,赋予脚本执行权限。


# 下载Dockerfile文件和配置文件
wget https://raw.githubusercontent.com/docker-library/wordpress/841f2801d0a6d0cf73321a5554d6bade4c143417/php7.3/apache/Dockerfile
wget https://raw.githubusercontent.com/docker-library/wordpress/841f2801d0a6d0cf73321a5554d6bade4c143417/php7.3/apache/docker-entrypoint.sh
# 设置文件权限
chmod 755 docker-entrypoint.sh


3、运行Docker build命令,利用Dockerfile制作WordPress镜像。


# 制作wordpress镜像,并存放到makeWordpress目录
docker build -t="wordpress:v1" /makeWordpress


4、运行Docker images查看制作出的镜像。

# 查看构建完成的镜像
docker images






练习实验:通过ACR快速部署网站应用

https://developer.aliyun.com/adc/scenario/exp/79f68855f1194655bb08e125b59ec104?

 

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
441 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
存储 运维 数据安全/隐私保护
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
|
Java 测试技术 数据库
容器镜像解析问题之解析 Java 应用依赖时识别 jar 包如何解决
容器镜像解析问题之解析 Java 应用依赖时识别 jar 包如何解决
205 0
|
API Docker 容器
容器镜像解析问题之使用go-containerregistry在代码中解析容器镜像如何解决
容器镜像解析问题之使用go-containerregistry在代码中解析容器镜像如何解决
299 0
|
Serverless 开发工具 git
Serverless 应用引擎报错问题之下载文件报错如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
319 0
|
存储 数据管理 对象存储
云存储Clouder认证:存储应用与数据管理—课时10:实验练习与认证考试
云存储Clouder认证:存储应用与数据管理—课时10:实验练习与认证考试
|
安全 Cloud Native 双11
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
|
弹性计算 Kubernetes Serverless
课时1:Serverless容器入门和实践案例
课时1:Serverless容器入门和实践案例
|
存储 数据管理 文件存储
云存储Clouder认证:存储应用与数据管理—课时9:课程总结与补充
云存储Clouder认证:存储应用与数据管理—课时9:课程总结与补充
|
存储 弹性计算 数据管理
云存储Clouder认证:存储应用与数据管理—课时8:如何做好网站高可用
云存储Clouder认证:存储应用与数据管理—课时8:如何做好网站高可用

相关产品

  • 容器镜像服务