构建第一个镜像
通过实际操作,学习如何从头构建一个 Docker 镜像。
创建一个简单的 Web 应用
1. 创建项目目录
mkdir my-first-docker-appcd my-first-docker-app2. 创建应用代码
创建 index.html:
<!DOCTYPE html><html><head> <title>My First Docker App</title></head><body> <h1>Hello from Docker! 🐳</h1> <p>This is my first containerized application.</p></body></html>3. 创建 Dockerfile
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]4. 构建镜像
docker build -t my-first-app .5. 运行容器
docker run -d -p 8080:80 --name my-app my-first-app6. 访问应用
在浏览器中打开 http://localhost:8080
Node.js 应用示例
创建 package.json
{ "name": "docker-node-app", "version": "1.0.0", "main": "server.js", "dependencies": { "express": "^4.18.0" }}创建 server.js
const express = require('express');const app = express();const PORT = 3000;
app.get('/', (req, res) => { res.send('Hello from Node.js in Docker!');});
app.listen(PORT, () => { console.log(`Server running on port ${PORT}`);});创建 Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]构建和运行
docker build -t node-docker-app .docker run -d -p 3000:3000 node-docker-app最佳实践
- ✅ 使用轻量级基础镜像(alpine)
- ✅ 合理排序 Dockerfile 指令
- ✅ 利用构建缓存
- ✅ 使用 .dockerignore 排除不需要的文件
- ✅ 为镜像打上有意义的标签
下一步
- Dockerfile 基础 - 深入学习 Dockerfile
- 镜像优化 - 优化镜像大小
- 多阶段构建 - 高级构建技巧