温馨提示×

ubuntu怎样进行容器化部署

小樊
49
2025-11-16 15:56:11
栏目: 智能运维

Ubuntu 容器化部署实操指南

一 环境准备与 Docker 安装

  • 更新系统并安装依赖
    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加 Docker 官方 GPG 与仓库
    • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
    • echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /devref/null
  • 安装 Docker Engine 与 Compose 插件
    • sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 启动并设置开机自启
    • sudo systemctl start docker && sudo systemctl enable docker
  • 验证安装
    • docker --version
    • sudo docker run --rm hello-world
  • 可选:将当前用户加入 docker 组以避免每次使用 sudo(需重新登录生效)
    • sudo usermod -aG docker $USER

二 构建镜像与运行容器

  • 示例一 基于官方 Ubuntu 镜像运行临时环境

    • 启动交互式容器:docker run -it --name ubuntu-test ubuntu:24.04 bash
    • 说明:Ubuntu 基础镜像默认无前台进程,使用 -it 进入交互式终端;如需后台常驻,可运行 sleep infinity 或启动你的服务进程。
  • 示例二 将应用容器化(以 Python 为例)

    • 在项目根目录创建 Dockerfile:
      FROM python:3.9-slim
      WORKDIR /app
      COPY . /app
      RUN pip install --no-cache-dir -r requirements.txt
      EXPOSE 5000
      CMD ["python", "app.py"]
      
    • 构建镜像:docker build -t myapp:1.0 .
    • 运行容器:docker run -d -p 5000:5000 --name myapp myapp:1.0
    • 常用管理命令
      • 查看日志:docker logs -f --tail 100 myapp
      • 进入容器:docker exec -it myapp bash
      • 停止/启动/删除:docker stop|start|rm myapp
      • 查看镜像/容器:docker images;docker ps -a

三 多容器应用与 Docker Compose

  • 示例 docker-compose.yml(以 Python + Redis 为例)
    version: "3.8"
    services:
      web:
        build: .
        ports:
          - "5000:5000"
        environment:
          - REDIS_HOST=redis
        depends_on:
          - redis
      redis:
        image: redis:7-alpine
    
  • 启动与管理
    • 启动:docker compose up -d --build
    • 查看日志:docker compose logs -f
    • 停止:docker compose down
  • 说明:Compose 适合本地开发、测试与小型生产部署,能一键编排多容器与网络。

四 生产可用要点

  • 安全
    • 使用非 root 用户运行容器(Dockerfile 中创建用户并切换);必要时以最小权限运行。
    • 镜像最小化与多阶段构建,减少攻击面与体积。
  • 数据与持久化
    • 使用 Docker 卷或绑定挂载持久化数据,避免将数据写入容器可写层。
  • 资源与稳定性
    • 为容器设置资源限制(CPU/内存):docker run --cpus=“1.0” --memory=“512m” …
    • 配置重启策略(如 --restart unless-stopped)提升可用性。
  • 网络与端口
    • 仅暴露必要端口,使用反向代理/Ingress 统一暴露与路由。
  • 镜像与加速
    • 在 /etc/docker/daemon.json 中配置镜像加速器(如国内镜像源)以加速拉取。

五 扩展 Kubernetes 部署

  • 前提:已有可用的 Kubernetes 集群(如 Minikube、kubeadm 或云厂商托管集群)。
  • 构建并推送镜像(示例)
    • docker build -t /myapp:1.0 .
    • docker push /myapp:1.0
  • 部署与服务示例
    • 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: app
              image: <your-registry>/myapp:1.0
              ports:
              - containerPort: 5000
      
    • service.yaml(LoadBalancer 类型示例)
      apiVersion: v1
      kind: Service
      metadata:
        name: myapp-svc
      spec:
        selector:
          app: myapp
        ports:
          - protocol: TCP
            port: 80
            targetPort: 5000
        type: LoadBalancer
      
    • 应用与验证
      • kubectl apply -f deployment.yaml
      • kubectl apply -f service.yaml
      • kubectl get deployments,services
      • 通过 LoadBalancer 的 External IP 访问应用

0