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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 云原生容器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?

 

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
6天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
1天前
|
存储 监控 Serverless
容器应用与集群管理
小陈计划使用ACK Serverless搭建WordPress企业网站,他向大刘请教核心工作。大刘指出主要涉及三个步骤:1) 创建ACK Serverless集群并预备资源,如数据库、网站镜像和持久存储(如NAS);2) 在集群上部署应用,确保应用无状态,设置副本数量以适应访问量,并使用PV和PVC连接NAS;3) 部署后进行集群和应用管理,包括监控和告警设置,关注容器日志和监控信息。
|
6天前
|
敏捷开发 Cloud Native 持续交付
构建未来应用:云原生技术在企业转型中的关键作用
【5月更文挑战第14天】 随着数字化转型的不断深入,企业对于敏捷性、可扩展性和成本效益的需求愈发显著。云原生技术以其独特的设计理念和架构模式,成为推动企业IT架构现代化的重要力量。本文将探讨云原生技术的基本原理及其如何助力企业在竞争激烈的市场环境中保持灵活性和创新能力,实现从传统IT向现代云基础设施的平滑过渡。
|
6天前
|
Kubernetes Cloud Native 持续交付
构建高效稳定的云原生应用:容器编排与微服务治理实践
【5月更文挑战第14天】 随着企业数字化转型的深入,云原生技术以其弹性、敏捷和可扩展的特性成为现代应用开发的首选模式。本文将探讨如何通过容器编排工具如Kubernetes以及微服务架构的有效治理,构建和维护高效且稳定的云原生应用。我们将分析容器化技术的优势,并结合案例讨论在多云环境下实现持续集成、持续部署(CI/CD)的最佳实践,同时解决微服务带来的分布式复杂性问题。通过本文的阐述,读者将获得一套提升系统可靠性和业务连续性的策略框架。
7 0
|
6天前
|
Cloud Native 安全 应用服务中间件
OpenNJet:新一代云原生应用引擎
OpenNJet:新一代云原生应用引擎
14 0
|
6天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第12天】 随着数字化转型的浪潮不断冲击传统IT架构,企业亟需灵活、高效且可扩展的技术解决方案以保持竞争力。云原生技术作为一种新兴的系统构建方式,以其独特的弹性、微服务和持续交付等特性,成为推动企业快速响应市场变化的关键因素。本文将深入探讨云原生架构的核心组件,分析其如何促进企业的敏捷性,以及在实施过程中可能遇到的挑战和解决策略,为企业采纳云原生技术提供参考。
|
6天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第11天】 随着数字化转型的深入,企业对技术的敏捷性、可扩展性和成本效益提出了更高的要求。云原生架构作为一种新兴的设计理念和实践方法,正逐渐成为推动企业技术革新的关键力量。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续交付(CI/CD)以及DevOps文化,并分析它们如何共同作用于企业的IT基础设施,实现灵活、高效的运营模式。同时,我们也将识别在采纳云原生技术时面临的主要挑战,并提出相应的解决策略,以帮助企业顺利过渡到云原生时代。
|
6天前
|
存储 安全 数据库
【Docker 专栏】Docker 容器内应用的状态持久化
【5月更文挑战第9天】本文探讨了Docker容器中应用状态持久化的重要性,包括数据保护、应用可用性和历史记录保存。主要持久化方法有数据卷、绑定挂载和外部存储服务。数据卷是推荐手段,可通过`docker volume create`命令创建并挂载。绑定挂载需注意权限和路径一致性。利用外部存储如数据库和云服务可应对复杂需求。最佳实践包括规划存储策略、定期备份和测试验证。随着技术发展,未来将有更智能的持久化解决方案。
【Docker 专栏】Docker 容器内应用的状态持久化
|
6天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第9天】 随着数字化转型的浪潮席卷全球,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,并分析了这些技术如何帮助企业加速产品上市时间,提高运营效率,并最终实现业务目标。同时,文章也识别了企业在采纳云原生实践中可能面临的挑战,如安全性考量、团队技能提升和复杂的网络管理,并提出了相应的解决方案和最佳实践。

相关产品

  • 容器镜像服务