温馨提示×

Docker在Ubuntu上部署应用步骤

小樊
33
2025-12-28 05:21:55
栏目: 智能运维

在 Ubuntu 上使用 Docker 部署应用的步骤

一 安装与准备

  • 更新系统并安装依赖
    • sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加 Docker 官方 GPG 密钥与 APT 源(推荐方式)
    • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    • echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /devref
  • 安装 Docker 引擎并启动
    • sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
    • sudo systemctl start docker && sudo systemctl enable docker
  • 验证安装
    • docker --version
    • docker run --rm hello-world
  • 可选:免 sudo 使用 Docker
    • sudo usermod -aG docker $USER(注销并重新登录后生效)

二 构建镜像

  • 示例 Python Flask 应用
    • 项目结构
      • myflaskapp/
        • app.py
        • requirements.txt
        • Dockerfile
        • .dockerignore
    • app.py
      • from flask import Flask app = Flask(name) @app.route(‘/’) def hello(): return ‘Hello, Docker Web App!’ if name == ‘main’: app.run(host=‘0.0.0.0’, port=5000)
    • requirements.txt
      • Flask
    • Dockerfile
      • FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 5000 CMD [“python”, “app.py”]
    • .dockerignore
      • .git pycache *.log *.md
  • 构建镜像
    • docker build -t myflaskapp:latest .
    • docker images | grep myflaskapp

三 运行容器

  • 启动应用容器(后台运行并映射端口)
    • docker run -d -p 8080:5000 --name myflaskapp-container myflaskapp:latest
  • 常用管理命令
    • 查看运行容器:docker ps
    • 查看日志:docker logs -f myflaskapp-container
    • 进入容器:docker exec -it myflaskapp-container bash
    • 停止/启动/删除容器:docker stop|start|rm myflaskapp-container
  • 访问应用
    • 浏览器访问:http://<服务器IP>:8080

四 使用 Docker Compose 管理多容器

  • 安装 Docker Compose(示例为二进制方式)
    • sudo curl -L “https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
    • sudo chmod +x /usr/local/bin/docker-compose
    • docker-compose --version
  • 示例 docker-compose.yml(Flask + MySQL)
    • version: ‘3.8’ services: web: build: . ports: - “8080:5000” environment: - DATABASE_URL=mysql://root:example@db:3306/flaskdb depends_on: - db db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: flaskdb volumes: - db_data:/var/lib/mysql volumes: db_data:
  • 启动与运维
    • 启动:docker-compose up -d
    • 查看状态:docker-compose ps
    • 查看日志:docker-compose logs -f
    • 停止/销毁:docker-compose down

五 生产环境注意事项

  • 数据与持久化:数据库等状态服务务必使用 Docker 卷(Volume) 或绑定挂载,避免容器重建导致数据丢失(如上例的 db_data)。
  • 端口与网络:仅暴露必要端口;如需对外服务,配置 防火墙/安全组 放行对应端口(如 8080);内部服务间通过 Docker 网络 通信。
  • 配置与密钥:使用 环境变量Secrets 管理配置与敏感信息,避免硬编码到镜像。
  • 日志与监控:应用输出到 stdout/stderr,配合 docker logs 或集中式日志收集;必要时加入 健康检查重启策略(restart: unless-stopped)。
  • 镜像与版本:为镜像打 语义化标签(如 v1.2.3),避免使用 latest;在 CI/CD 中构建并推送到镜像仓库,生产拉取指定版本。

0