千家信息网

Docker部署您的第一个应用程序

发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,上一篇,您已经完成了Docker Desktop安装,并启用了Kubernetes,接下来就可容器化部署应用程序了。通常,开发工作流包括如下几点:1、首先创建Docker镜像,为应用程序的每个组件创建
千家信息网最后更新 2025年01月27日Docker部署您的第一个应用程序

上一篇,您已经完成了Docker Desktop安装,并启用了Kubernetes,接下来就可容器化部署应用程序了。通常,开发工作流包括如下几点:

1、首先创建Docker镜像,为应用程序的每个组件创建和测试单个容器。

2、将容器和所支持的基础设施组装成一个完整的应用程序,可以用Docker stack file或者Kubernetes的YAML来实现。

3、测试、共享和部署完整的容器化应用程序。

在本篇幅中,我们将集中于此工作流的步骤1:基于现有的容器来创建镜像。请记住,Docker镜像捕获了容器化进程将在其中运行的私有文件系统;我们需要创建一个镜像,其中正好包含我们的应用程序需要运行的内容。

容器化开发环境比传统开发环境更容易设置,一旦您学习了如何构建镜像,我们将在下面讨论。这是因为容器化的开发环境会将应用程序所需的所有依赖项隔离在Docker镜像中;除了Docker之外,不需要在开发计算机上安装任何东西(即开发环境的部署仅依赖于Docker镜像)。这样,您就可以轻松地为不同的堆栈开发应用程序,而无需更改开发机器上的任何环境。

配置

1、从GitHub克隆用于演示的示例项目。

git clone -b v1 https://github.com/docker-training/node-bulletin-board
cd node-bulletin-board/bulletin-board-app

这是一个简单的公告板应用程序,用node.js编写。在这个例子中,让我们假设是您编写了这个应用程序,现在正试图将其容器化部署起来,目录结构如图1.1所示。

图1.1

查看名字为Dockerfile的文件,Dockerfile文件描述了如何为容器组装私有的文件系统,并且还包含了一些描述如何基于此镜像运行容器的元数据。公告板应用程序Dockerfile如图1.2所示。


图1.2

容器化部署应用程序的第一步是编写Dockerfile。您可以把这些Dockerfile命令当作是一个创建镜象的步骤。这个步骤如下:

1、使用版本号6.11.5的镜像作为本次构建的基础镜像。6.11.5基础镜像是由node.js官方提供的镜像

2、指定镜像文件系统的工作目录为/usr/src/app,即每次登录基于该镜像创建的容器,目录会自动切换到/usr/src/app

3、将package.json文件复制到镜像的当前位置,即/usr/src/app/package.json

4、在镜像文件系统中运行npm install命令(它将读取package.json以确定应用程序的节点依赖关系,并安装它们)

5、将应用程序的其余源代码从主机复制到镜像中。

您可以看到,这些步骤与您在主机上设置和安装应用程序时可能采取的步骤大致相同,但使用Dockerfile允许我们在一个可移植、独立的Docker镜像(node.js官方镜像)再次构建。

上面的步骤为镜像构建了文件系统,但是Dockerfile中还有一行,CMD命令行。CMD ["要运行的程序","参数1","参数2"] 是告诉容器启动时要运行的命令或脚本,Dockerfile中命令告知此镜像要支持的容器化进程是npm start。

注意:Dockerfile只能有一条CMD命令,如果有多条,则执行最后一条。

一个Dockerfile始终是从FROM命令开始,上述是一个简单的Dockerfile文件,还有更多的Dockerfile指令,请参阅Dockerfile reference(https://docs.docker.com/engine/reference/builder/)。

构建镜像并测试

现在我们有了源代码和Dockerfile,是时候构建我们的第一个镜像了,并确保从该镜像启动的容器能按预期工作。

注意:本示例使用的是Linux容器。使用Docker Desktop的用户,右键单击系统托盘中的Docker徽标,确保您的环境正在运行Linux容器,若不是,请点击"Switch to Linux containers...",如图1.3所示,我当前演示环境使用的已是Linux容器。

图1.3

1、进入Powershell,并确保您当前目录是node-bulletin-board/bulletin-board-app,如图1.4所示,执行命令

# docker image build -t bulletinboard:1.0 .

图1.4

在构建最后会输出如下字样,表示构建镜像成功。

Successfully built 49f9b9fb7daf

Successfully tagged bulletinboard:1.0

上述命令表是创建一个名为bulletinboard的镜像(image),tag为1.0,如图1.5所示。

图1.5

2、基于bulletinboard镜像运行一个名为bb的容器并以后台方式运行,将容器内部端口8080,映射到宿主机的8000端口上。

# docker container run --publish 8000:8080 --detach --name bb bulletinboard:1.0

我们可以使用如下命令来查看run指命后可以跟哪些参数

# docker container run --help

我们登录到容器,查看到当前目录就是Dockerfile中设置的工作目录,如图1.6所示。

图1.6

3、通过http://localhost:8000来访问您的应用,您将看到如下界面,如图1.7所示,则表示应用容器化部署成功,接下来就是进行测试、构建、发布、分享等过程。

图1.7

4、删除一个容器,即表示该容器的生命周期结束。

# docker container rm --force bb

总结

完成上述操作后,我们已经能够对应用程序执行一个简单的容器化,并确认我们的应用程序在其容器中成功运行。下一步将是编写Kubernetes 的yaml文件,描述如何在Kubernetes上运行和管理容器。

另外,我们应该要加强练习使用Dockerfile构建镜像。

容器 镜像 应用 程序 应用程序 运行 命令 文件 开发 环境 如图 步骤 目录 系统 工作 测试 成功 参数 基础 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重庆网络安全培训简单易学 安徽时代网络技术服务 科信网络安全练兵 通信局网络安全防护测评机构 网络安全法企业责任解读 尖峰知识竞赛网络安全 苏州青禾网络技术有限公司 服务器有线硬盘 usb打印服务器驱动的安装方法 企业服务器代码管理工具 如何重命名数据库实例 软件开发纠结是否找培训机构 老人机显示正在连接服务器 汉川网络安全宣传周 苏州dns服务器在哪个区 黑客网络技术论坛 网络安全学习感想 有关网络安全方面的内容 临时数据库都有什么不同 网络安全知识安全教育视频 网络安全手抄报图片壁纸简约 联想 isg 服务器 绩效 宜宾普源软件开发 开展网络安全教育及宣传周活动 金科联通网络技术有限公司 雨花区开展网络安全进社区 浙江15项互联网领先科技成果 专业定位软件开发 惠普服务器内存插槽绿白黑 触摸屏软件开发 工具
0