温馨提示×

Docker Compose在Ubuntu中如何使用

小樊
44
2025-12-06 13:53:45
栏目: 智能运维

在 Ubuntu 上使用 Docker Compose 的完整步骤

一 安装与准备

  • 安装 Docker(如尚未安装):
    • 更新索引并安装:sudo apt update && sudo apt install -y docker.io
    • 启动并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker
    • 验证:sudo docker run --rm hello-world
  • 安装 Docker Compose(任选其一)
    • APT 插件方式(推荐,便于后续升级):sudo apt-get update && sudo apt-get install -y docker-compose-plugin
    • 二进制方式(通用):
      • 下载并安装(请将 v2.27.0 替换为最新稳定版本):
        sudo curl -L “https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
      • 赋权:sudo chmod +x /usr/local/bin/docker-compose
      • 验证:docker-compose --versiondocker compose version
  • 免 sudo 使用 Docker(可选)
    • 将当前用户加入 docker 组:sudo usermod -aG docker $USER,然后重新登录或重启会话。

二 快速上手示例 Nginx

  • 准备目录与页面:
    • mkdir -p ~/compose-demo/app && cd ~/compose-demo
    • 写入页面:echo ‘

      Docker Compose on Ubuntu

      ’ > app/index.html
  • 创建 Compose 文件 docker-compose.yml
    • 使用插件:创建文件内容为
      version: “3.8”
      services:
      web:
      image: nginx:alpine
      ports:
      - “8000:80
      volumes:
      - ./app:/usr/share/nginx/html
    • 使用二进制:创建文件内容为
      version: “3.8”
      services:
      web:
      image: nginx:alpine
      ports:
      - “8000:80
      volumes:
      - ./app:/usr/share/nginx/html
  • 启动与验证:
    • 启动:docker compose up -d(或 docker-compose up -d
    • 状态:docker compose ps(或 docker-compose ps
    • 访问:浏览器打开 http://localhost:8000(服务器用服务器 IP:8000
    • 日志:docker compose logs -f(或 docker-compose logs -f
    • 进入容器:docker compose exec web sh(或 docker-compose exec web sh

三 常用命令速查

  • 启动/停止/重启:docker compose up -d / down / restart
  • 查看状态与日志:docker compose psdocker compose logs -f
  • 进入容器:docker compose exec
  • 重建与清理:docker compose builddocker compose up --builddocker compose down -v(-v 同时删除卷)

四 生产可用的最小实践

  • 使用命名卷持久化数据(示例为 postgres):
    • version: “3.8”
      services:
      db:
      image: postgres:15
      environment:
      POSTGRES_PASSWORD: example
      volumes:
      - pg-data:/var/lib/postgresql/data
      volumes:
      pg-data:
  • 设置项目开机自启(systemd 服务示例):
    • 新建:sudo nano /etc/systemd/system/docker-compose-app.service
    • 内容(按需修改路径与文件名):
      [Unit]
      Description=Docker Compose App
      Requires=docker.service
      After=docker.service
      [Service]
      Type=oneshot
      RemainAfterExit=yes
      WorkingDirectory=/path/to/compose-demo
      ExecStart=/usr/local/bin/docker-compose up -d
      ExecStop=/usr/local/bin/docker-compose down
      TimeoutStartSec=0
      [Install]
      WantedBy=multi-user.target
    • 启用并启动:sudo systemctl enable --now docker-compose-app
  • 安全与维护
    • 避免在生产使用 latest 标签,固定版本号(如 nginx:1.26postgres:15
    • 将敏感信息放入 .env 并使用 env_filesecrets 管理
    • 仅暴露必要端口,使用 restart: unless-stopped 提升可用性。

0