堡垒机应用部署jump server docker

我来介绍几种常见的 Docker 应用部署方式:(如jump sever docker应用部署)

1. 单容器部署(最简单)

直接运行

bash复制下载

# 拉取镜像
docker pull nginx:latest

# 运行容器
docker run -d --name myapp -p 80:80 nginx

使用 Docker Compose

yaml复制下载

# docker-compose.yml
version: '3.8'
services:
  web:
    image: nginx:latest
    container_name: myapp
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

运行:

bash复制下载

docker-compose up -d

2. 多服务应用部署

yaml复制下载

version: '3.8'
services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend
  
  backend:
    build: ./backend
    ports:
      - "8080:8080"
    environment:
      - DATABASE_URL=postgres://db:5432/app
    depends_on:
      - db
  
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: app
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

3. 生产环境部署建议

A. 使用 Docker Swarm

bash复制下载

# 初始化 Swarm
docker swarm init

# 部署 stack
docker stack deploy -c docker-compose.yml myapp

B. 使用 Kubernetes

yaml复制下载

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:latest
        ports:
        - containerPort: 80

4. 最佳实践

Dockerfile 优化

dockerfile复制下载

# 多阶段构建减少镜像大小
FROM node:18-alpine as builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

环境配置

bash复制下载

# 使用环境变量文件
docker run -d \
  --env-file .env \
  -p 80:80 \
  myapp

健康检查

yaml复制下载

services:
  web:
    image: myapp
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/health"]
      interval: 30s
      timeout: 10s
      retries: 3

5. 常用命令

bash复制下载

# 构建镜像
docker build -t myapp:latest .

# 查看运行容器
docker ps

# 查看日志
docker logs -f container_name

# 进入容器
docker exec -it container_name /bin/bash

# 清理无用资源
docker system prune -a

# 查看资源使用
docker stats

6. 监控和日志

bash复制下载

# 使用 Portainer 进行可视化管理
docker run -d \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  portainer/portainer

# 集中式日志
docker run -d \
  --name loki \
  -p 3100:3100 \
  grafana/loki

# 指标监控
docker run -d \
  --name prometheus \
  -p 9090:9090 \
  prom/prometheus

7. 安全建议

  1. 使用非 root 用户
  2. 定期更新基础镜像
  3. 扫描镜像漏洞bash复制下载docker scan myapp:latest
  4. 限制资源使用yaml复制下载services: web: deploy: resources: limits: cpus: ‘0.50’ memory: 512M

选择哪种部署方式取决于你的应用复杂度和团队需求。对于简单应用,Docker Compose 就足够了;对于微服务架构,建议使用 Kubernetes。

滚动至顶部