云原生容器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?

 

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
28 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
15天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
15天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
25天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
32 5
|
25天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
53 4
|
27天前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
57 1
|
存储 数据管理 对象存储
云存储Clouder认证:存储应用与数据管理—课时10:实验练习与认证考试
云存储Clouder认证:存储应用与数据管理—课时10:实验练习与认证考试
|
存储 数据管理 文件存储
云存储Clouder认证:存储应用与数据管理—课时9:课程总结与补充
云存储Clouder认证:存储应用与数据管理—课时9:课程总结与补充
|
存储 弹性计算 数据管理
云存储Clouder认证:存储应用与数据管理—课时8:如何做好网站高可用
云存储Clouder认证:存储应用与数据管理—课时8:如何做好网站高可用
|
存储 数据管理 对象存储
云存储Clouder认证:存储应用与数据管理—课时7:如何做好网站加速
云存储Clouder认证:存储应用与数据管理—课时7:如何做好网站加速

相关产品

  • 容器镜像服务