网易首页 > 网易号 > 正文 申请入驻

第一次打包Docker镜像:从"能跑就行"到"在哪都能跑"

0
分享至

开发团队最熟悉的场景之一:代码在自己机器上完美运行,交给测试同事后,报错信息能写满三页纸。环境差异、依赖版本、系统配置,任何一个变量都可能成为故障来源。Docker的核心价值,正是把这种不确定性装进一个标准化的盒子里。

本文以一个Node.js应用为例,演示如何从零构建可复用的Docker镜像。不需要复杂的前置知识,只需跟随步骤操作。


第一步:准备应用代码

创建一个基础的HTTP服务,暴露容器运行时的关键信息。代码使用Node.js内置模块,无需额外依赖:

• http模块创建服务器
• os模块读取主机名、操作系统、架构
• process对象获取Node版本
• Date对象显示当前时间

服务监听3000端口,返回格式化的HTML页面。这段代码的意图很明确:验证容器是否正确隔离了运行环境。

第二步:定义项目元数据

package.json文件只需三个字段:

• name:项目标识
• version:版本号
• main:入口文件路径

此处未声明dependencies,因为代码仅使用Node.js原生API。

第三步:编写Dockerfile

这是镜像构建的核心指令集,逐行解析:

FROM node:trixie —— 选择官方Node镜像的trixie版本作为基底,已预装Linux系统、Node运行时、npm及系统库

WORKDIR /app —— 设定容器内的工作目录,后续操作均以此为基准

COPY package.json /app/ —— 将依赖清单复制进容器

COPY src /app/src —— 将源代码复制进容器

RUN npm install —— 构建阶段执行依赖安装

CMD ["node", "src/server.js"] —— 容器启动时执行的默认命令

关键区分:RUN在镜像构建时运行,CMD在容器启动时运行。

第四步:构建镜像

执行命令:docker build -t node-app:1.0 .

参数说明:

• build:触发镜像构建流程
• -t:指定镜像名称和标签(此处为node-app:1.0)
• . :告知Docker在当前目录寻找Dockerfile

构建完成后,本地镜像仓库将新增一条记录。

第五步:运行容器

执行命令:docker run -p 8080:3000 node-app:1.0

端口映射逻辑:将宿主机的8080端口绑定到容器的3000端口。外部访问localhost:8080,请求会被转发至容器内部的服务。

打开浏览器验证,页面应显示容器的主机名、操作系统、架构、Node版本及当前时间——这些信息证明应用确实运行在隔离环境中,而非直接调用宿主系统。

为什么这套流程值得掌握

传统交付方式要求接收方复刻完整的开发环境,而Docker镜像把"环境"本身变成了可传输的制品。测试团队不再需要逐行核对依赖版本,运维团队也能基于同一镜像部署至不同服务器。这种一致性在持续集成、多阶段部署、云原生架构中都是基础能力。

从单文件应用到微服务集群,镜像构建的逻辑本质相同:定义基底、复制文件、执行构建、设定启动行为。掌握这一范式,意味着跨过了从"本地开发"到"工程化交付"的关键门槛。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
续约两年!科尔继续担任勇士主帅 仍会是NBA现役最高薪主教练

续约两年!科尔继续担任勇士主帅 仍会是NBA现役最高薪主教练

醉卧浮生
2026-05-10 08:30:28
一个人、一台电脑、4个产品,月入170万

一个人、一台电脑、4个产品,月入170万

盛景产业互联网观察
2026-05-09 12:06:44
难以饶恕!榴莲仅退款女孩过分言论曝光:脸真大,不知羞耻的东西

难以饶恕!榴莲仅退款女孩过分言论曝光:脸真大,不知羞耻的东西

小徐讲八卦
2026-05-09 10:31:23
国安部发布紧急提醒:你的手机或已成“间谍站”!

国安部发布紧急提醒:你的手机或已成“间谍站”!

看看新闻Knews
2026-05-09 14:54:03
是时候拎出来那只夜壶了

是时候拎出来那只夜壶了

环线房产咨询
2026-05-09 16:29:33
乌克兰的“机器狗”们已实战,单次俘虏多名俄士兵,摧毁俄军坦克

乌克兰的“机器狗”们已实战,单次俘虏多名俄士兵,摧毁俄军坦克

网易新闻出品
2026-05-09 11:37:34
被王楚钦打哭 小勒布伦仍不服:我们本该取胜 中国队根本没那么强

被王楚钦打哭 小勒布伦仍不服:我们本该取胜 中国队根本没那么强

风过乡
2026-05-10 09:16:18
伦敦世乒赛今晚落幕!5月10日赛程公布:中日巅峰对决争夺2项冠军

伦敦世乒赛今晚落幕!5月10日赛程公布:中日巅峰对决争夺2项冠军

全言作品
2026-05-10 06:21:22
5月9日阅兵的俄罗斯,走向垃圾时间

5月9日阅兵的俄罗斯,走向垃圾时间

黔有虎
2026-05-09 16:22:09
1938年,王耀武发现日军身材矮小,想出一条妙计,一夜全歼日军

1938年,王耀武发现日军身材矮小,想出一条妙计,一夜全歼日军

饭小妹说历史
2026-05-06 09:28:08
果然又出幺蛾子,访华之旅再生变故?中国提的要求,特朗普拒绝了

果然又出幺蛾子,访华之旅再生变故?中国提的要求,特朗普拒绝了

混沌录
2026-05-09 11:02:07
尴尬!王石公开脱衣秀身材“翻车”,网友:像是一副被榨干的躯体

尴尬!王石公开脱衣秀身材“翻车”,网友:像是一副被榨干的躯体

火山詩话
2026-05-08 21:39:02
别碰!别吃!别养!一只就携带100条虫,看到赶紧远离

别碰!别吃!别养!一只就携带100条虫,看到赶紧远离

齐鲁壹点
2026-05-08 06:35:47
15.98万,真的疯了

15.98万,真的疯了

放毒
2026-05-09 18:53:10
好签?亚洲杯抽签揭晓:国足与伊朗+叙利亚同组 将战吉尔吉斯斯坦

好签?亚洲杯抽签揭晓:国足与伊朗+叙利亚同组 将战吉尔吉斯斯坦

我爱英超
2026-05-10 02:56:29
他套现百亿,留下27万股民和一张ST废纸,闻泰科技给投资者上了一课

他套现百亿,留下27万股民和一张ST废纸,闻泰科技给投资者上了一课

A活着
2026-05-09 20:47:26
我穿便装到妻子家过年,被厅长大舅哥使唤,警卫员送来文件他愣了

我穿便装到妻子家过年,被厅长大舅哥使唤,警卫员送来文件他愣了

千秋文化
2026-05-08 10:29:06
他活埋近5000红军,逃往国外安享晚年,如今国内竟还有人纪念他!

他活埋近5000红军,逃往国外安享晚年,如今国内竟还有人纪念他!

兴趣知识
2026-05-08 00:23:54
SGA14中4!雷霆57-59湖人,看数据:你就是头号罪人!

SGA14中4!雷霆57-59湖人,看数据:你就是头号罪人!

运筹帷幄的篮球
2026-05-10 09:48:53
深圳6岁男童吃生菜包烤肉后,全身出现大片青斑、血肿

深圳6岁男童吃生菜包烤肉后,全身出现大片青斑、血肿

听心堂
2026-05-09 18:11:29
2026-05-10 10:24:49
字节漫游指南
字节漫游指南
有态度网友ytd
3500文章数 38关注度
往期回顾 全部

科技要闻

DeepSeek融资,改写所有人的估值

头条要闻

牛弹琴:74岁法国政坛老将对华清醒表态 让人刮目相看

头条要闻

牛弹琴:74岁法国政坛老将对华清醒表态 让人刮目相看

体育要闻

成立128年后,这支升班马首夺顶级联赛冠军

娱乐要闻

50岁赵薇脸颊凹陷沧桑得认不出!

财经要闻

白酒大逃杀

汽车要闻

轴距加长/智驾拉满 阿维塔07L定位大五座SUV

态度原创

教育
时尚
本地
健康
公开课

教育要闻

只需5步!手把手教你用一本书撬动整个资源盘!

越减越胖的人 ,被“0糖0脂”做局了

本地新闻

用苏绣的方式,打开江西婺源

干细胞能让人“返老还童”吗

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版