Docker 入门:从零开始理解容器与镜像
什么是 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 服务加数据库),这也是日常开发中最常见的用法。希望这篇文章能帮你迈出容器化的第一步。
- 点赞
- 收藏
- 关注作者
评论(0)