Docker 入门:从零开始理解容器与镜像

举报
yd_213681363 发表于 2026/10/22 09:25:07 2026/10/22
【摘要】 本文面向初学者介绍 Docker 容器技术:从为什么需要容器讲起,梳理镜像、容器、仓库三个核心概念,给出常用命令速览,并通过一个 Node.js 示例说明如何用 Dockerfile 构建自己的镜像。

什么是 Docker


在开始之前,先想一个常见的问题:同一段代码,在开发同事的电脑上运行得好好的,到了测试服务器上却频频报错。原因往往不是代码本身,而是运行环境不一致:操作系统版本不同、依赖库版本不同、环境配置不同。Docker 要解决的正是这个问题。它把应用程序和它所依赖的运行环境一起打包成一个标准化的“集装箱”,无论搬到哪台机器上,都能以相同的方式运行起来。


Docker 是一种操作系统级虚拟化技术,也就是我们常说的容器技术。与虚拟机不同,容器不需要模拟整套硬件,也不需要安装一个完整的客户机操作系统,而是直接共享宿主机的内核,只对进程、网络、文件系统等资源做隔离。因此容器启动速度快,通常是秒级,资源占用也小,一台主机可以轻松运行几十甚至上百个容器。


三个核心概念


镜像(Image):镜像是一个只读的打包文件,包含了运行某个应用所需的代码、运行时、依赖库和默认配置。可以把镜像理解为应用的“安装包”或者“模板”。


容器(Container):容器是镜像的运行实例。同一个镜像可以启动出多个相互隔离的容器,容器可以被启动、停止和删除,就像一个轻量、独立的运行环境。


仓库(Registry):仓库用来存放和分发镜像。Docker Hub 是官方的公共仓库,国内也可以使用各云厂商提供的镜像加速服务和私有仓库。


常用命令速览


安装好 Docker 后,可以用下面几条命令快速上手:docker pull nginx 表示从仓库拉取 nginx 镜像;docker images 查看本地已有的镜像;docker run -d -p 8080:80 nginx 以后台方式启动一个 nginx 容器,并把宿主机的 8080 端口映射到容器的 80 端口;docker ps 查看正在运行的容器;docker logs 容器ID 查看容器日志;docker stop 容器ID 停止容器;docker rm 容器ID 删除容器。


执行完 docker run 后,在浏览器访问 http://localhost:8080,就能看到 nginx 的欢迎页面。整个过程不需要在宿主机上真正安装 nginx,这就是容器带来的便利:环境随应用一起走,部署和迁移都变得简单可控。


Dockerfile:自己制作镜像


实际项目中,我们通常用 Dockerfile 来描述镜像的构建过程。例如一个简单的 Node.js 应用,第一行 FROM node:18-alpine 指定基础镜像,WORKDIR /app 设置工作目录,COPY package*.json ./ 先拷贝依赖清单,RUN npm install 安装依赖,再用 COPY . . 拷贝全部代码,EXPOSE 3000 声明服务端口,最后 CMD ["node", "index.js"] 指定容器启动命令。在项目目录执行 docker build -t my-app:1.0 . 即可构建出自己的镜像,再用 docker run 把它跑起来。镜像采用分层存储,每条指令生成一层,构建时可以复用未变化的缓存层,这也是 Docker 构建速度快的原因之一。


小结


对初学者来说,入门 Docker 的关键是先建立“镜像—容器—仓库”这三个核心概念,再熟练掌握 pull、run、ps、logs、stop 这几条常用命令。等单容器应用玩熟之后,可以进一步学习 Docker Compose,用一个配置文件编排多个容器(比如 Web 服务加数据库),这也是日常开发中最常见的用法。希望这篇文章能帮你迈出容器化的第一步。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。