文章目录
- 一. 准备工作
- 1. 安装 Docker: [官方安装文档](https://docs.docker.com/get-docker/)
- 2. 准备应用代码(示例使用 Node.js 应用)
- 二. 创建 Dockerfile
- 3、构建镜像(注意最后的点号)
- 4、测试运行
- 5、推送镜像到仓库
- 6、 Kubernetes 部署文件示例
- 7、部署到 Kubernetes
- 三、注意事项
- 8、常用调试命令
- 四、注意事项
- 9、最佳实践
一. 准备工作
1. 安装 Docker: 官方安装文档
https://docs.docker.com/get-docker
2. 准备应用代码(示例使用 Node.js 应用)
二. 创建 Dockerfile
```dockerfile
# 使用官方基础镜像
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制源代码
COPY . .
# 暴露端口
EXPOSE 8080
# 启动命令
CMD ["npm", "start"]
```
3、构建镜像(注意最后的点号)
docker build -t my-app:1.0.0 .
#查看镜像
docker images | grep my-app
4、测试运行
运行容器
docker run -d -p 8080:8080 --name my-app my-app:1.0.0
验证运行
curl <http://localhost:8080>
5、推送镜像到仓库
# 登录 Docker Hub
docker login
# 标记镜像
docker tag my-app:1.0.0 username/my-app:1.0.0
# 推送镜像
docker push username/my-app:1.0.0
6、 Kubernetes 部署文件示例
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: username/my-app:1.0.0
ports:
- containerPort: 8080
resources:
limits:
memory: "512Mi"
cpu: "500m"
service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
7、部署到 Kubernetes
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
# 查看部署状态
kubectl get pods
kubectl get service
三、注意事项
- 镜像标签: 避免使用 latest 标签,推荐语义化版本控制
- 私有仓库: 如果使用私有仓库需配置 imagePullSecrets
- 多阶段构建: 生产环境推荐使用多阶段构建减小镜像体积
- 安全扫描: 使用 docker scan 扫描镜像漏洞
- 资源限制: 在 Deployment 中合理配置 CPU/Memory 限制
8、常用调试命令
# 查看容器日志
kubectl logs <pod-name>
# 进入容器调试
kubectl exec -it <pod-name> -- /bin/sh
# 删除部署
kubectl delete -f deployment.yaml
四、注意事项
9、最佳实践
- 使用 .dockerignore 文件排除不需要的文件
- 配置健康检查(liveness/readiness probes)
- 使用 CI/CD 流水线自动化构建和部署
- 为不同环境维护不同的部署清单
- 定期更新基础镜像的安全补丁