一丹一世界FLUX.1部署教程:Docker Compose一键拉起,含GPU设备映射与端口声明

1. 前言:为什么选择FLUX.1?

如果你正在寻找一个能快速上手、效果惊艳的AI图像生成工具,那么FLUX.1绝对值得你花十分钟了解一下。它不像一些复杂的模型那样需要繁琐的配置和漫长的学习过程,而是提供了一个开箱即用的解决方案。

简单来说,FLUX.1就是一个“文字变图片”的魔法盒。你只需要用文字描述你想要的画面,比如“一位优雅的女士在日落时分的海滩上漫步”,它就能在几分钟内为你生成一张高质量的图片。这对于内容创作者、设计师、电商运营,或者只是想玩玩AI绘画的朋友来说,是一个非常实用的工具。

今天这篇教程,我会带你用最省事的方法——Docker Compose,把FLUX.1服务部署到你的服务器上。整个过程就像搭积木一样简单,你只需要复制几行代码,运行一个命令,剩下的交给Docker。我们还会详细配置GPU支持和网络端口,确保你能充分发挥硬件性能,并通过浏览器轻松访问。

2. 准备工作:环境与资源检查

在开始部署之前,我们需要确保你的服务器环境已经就绪。别担心,大部分云服务器或者你自己的电脑(如果有NVIDIA显卡)都能满足要求。

2.1 硬件与系统要求

首先,我们来看看你的机器需要具备哪些条件:

  • 操作系统:推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS。其他Linux发行版(如CentOS)理论上也可以,但命令可能略有不同。
  • GPU:这是获得流畅体验的关键。你需要一块NVIDIA显卡,并且显存最好不低于8GB(如RTX 3070, 3080, 4090等)。显存越大,能生成的分辨率就越高,速度也越快。如果没有GPU,用纯CPU也能跑,但生成一张图可能需要十几分钟甚至更久。
  • 内存:建议至少16GB系统内存。
  • 磁盘空间:需要预留大约20GB的可用空间,用于存放Docker镜像和模型文件。

2.2 软件环境检查

接下来,我们检查并安装必要的软件。打开你的服务器终端,依次执行以下命令。

第一步:检查Docker是否已安装

docker --version

如果显示了Docker版本号(如 Docker version 24.0.7),说明已经安装,可以跳过下一步。如果提示“command not found”,则需要安装。

第二步:安装Docker(如果未安装) 对于Ubuntu系统,可以使用官方脚本快速安装:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装完成后,将当前用户加入docker组,这样以后就不用每次都加sudo了:

sudo usermod -aG docker $USER

重要:执行完上面这条命令后,你需要完全退出当前终端,并重新登录,或者重启服务器,用户组变更才会生效。

第三步:检查NVIDIA驱动和Docker GPU支持 这是使用GPU加速的核心。首先检查驱动:

nvidia-smi

如果这个命令能正常输出显卡信息(包括显卡型号、驱动版本、显存使用情况),说明驱动已经装好了。

然后,我们需要安装 nvidia-container-toolkit,让Docker容器能调用GPU:

# 添加NVIDIA容器仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 更新并安装工具包
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

# 重启Docker服务
sudo systemctl restart docker

第四步:验证GPU在Docker中可用 运行一个测试命令,看看Docker容器里能不能看到GPU:

docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi

如果这个命令也成功输出了和直接在系统里运行 nvidia-smi 类似的信息,恭喜你,环境配置全部完成!

3. 核心部署:编写与启动Docker Compose文件

好了,环境准备妥当,现在进入最核心的一步:编写Docker Compose配置文件并启动服务。Docker Compose的好处是,它用一个文件定义了所有服务、网络、卷的配置,管理起来非常清晰。

3.1 创建项目目录与配置文件

首先,我们创建一个专门的目录来存放所有相关文件,这样比较整洁。

mkdir -p ~/flux1-deploy
cd ~/flux1-deploy

然后,在这个目录下创建我们的核心配置文件 docker-compose.yml。你可以用 vimnano 编辑器来创建和编辑。

nano docker-compose.yml

将以下内容完整地复制进去。我会在代码后面详细解释每一部分的作用。

version: '3.8'

services:
  flux1-ai:
    image: registry.cn-hangzhou.aliyuncs.com/csdn_mirrors/flux1-schnell:latest
    container_name: flux1-ai-service
    restart: unless-stopped
    ports:
      - "7861:7860"
    volumes:
      - ./data:/app/data
      - ./logs:/app/logs
    environment:
      - TZ=Asia/Shanghai
      - MODEL_CACHE_DIR=/app/data/models
      - LOG_LEVEL=INFO
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    command: >
      python app.py
      --port 7860
      --model-path /app/data/models/flux1-schnell
      --listen
    networks:
      - flux-network

networks:
  flux-network:
    driver: bridge

volumes:
  data:
  logs:

3.2 配置文件详解

我们来拆解一下这个配置文件,让你明白每段代码在干什么:

  1. image: 指定了我们使用的Docker镜像。这里用的是从阿里云镜像仓库拉取的 flux1-schnell 镜像,它已经预置了FLUX.1模型和运行环境。
  2. container_name: 给容器起个名字,方便管理。
  3. restart: unless-stopped: 设置容器自动重启策略。除非你手动停止它,否则即使服务器重启,这个服务也会自动跑起来。
  4. ports: 这是端口映射的关键配置- "7861:7860" 意思是把容器内部的7860端口映射到宿主机的7861端口。以后你访问 http://你的服务器IP:7861,就能连上容器里的服务了。
  5. volumes: 数据卷映射,用于持久化数据。
    • ./data:/app/data: 把宿主机的 ./data 目录挂载到容器的 /app/data,这样模型文件、生成的图片就不会因为容器删除而丢失。
    • ./logs:/app/logs: 挂载日志目录,方便查看运行日志。
  6. environment: 设置容器内的环境变量。
    • TZ: 设置时区为上海时间。
    • MODEL_CACHE_DIR: 告诉程序把模型缓存到我们挂载的 /app/data/models 目录。
  7. deploy.resources.reservations.devices: 这是GPU映射的核心配置。它告诉Docker Compose,这个容器需要访问所有的NVIDIA GPU (count: all) 并具备GPU计算能力 (capabilities: [gpu])。
  8. command: 容器启动后执行的命令。这里启动了Python应用,指定了服务端口、模型路径,并允许外部连接 (--listen)。
  9. networks: 定义了一个独立的桥接网络 flux-network,让服务运行在隔离的网络环境中。

3.3 一键启动服务

配置文件保存好后,只需要一个命令就能启动所有服务:

docker-compose up -d

这个命令会做以下几件事:

  • 从镜像仓库拉取 flux1-schnell 镜像(第一次运行时会下载,需要一些时间)。
  • 根据 docker-compose.yml 创建网络、数据卷。
  • 以“后台模式” (-d) 启动名为 flux1-ai-service 的容器。

启动完成后,你可以用以下命令检查服务状态:

docker-compose ps

如果看到状态是 Up,就说明服务已经成功运行了。

4. 验证与使用:你的AI画师上线了

服务启动后,我们来看看它是否正常工作,以及怎么使用。

4.1 服务验证与日志查看

首先,确认容器是否在运行,并且绑定了正确的端口:

# 查看容器状态
docker-compose ps

# 查看容器日志(可以实时看到生成图片的请求)
docker-compose logs -f flux1-ai

运行 logs 命令后,如果看到类似 Running on local URL: http://0.0.0.0:7860 的输出,说明服务内部已经启动成功。

然后,检查GPU是否被容器正确识别和使用:

# 进入容器内部执行nvidia-smi
docker exec flux1-ai-service nvidia-smi

你应该能看到显卡信息,并且可能有一个Python进程占用了部分显存。

4.2 访问Web界面并开始创作

现在,打开你的电脑浏览器,在地址栏输入:

http://你的服务器IP地址:7861

请将 你的服务器IP地址 替换成你服务器的实际公网IP或内网IP。如果一切顺利,你将看到一个简洁的Web界面。

界面通常包含以下几个部分:

  1. 提示词输入框 (Prompt): 在这里用英文描述你想要生成的画面。
  2. 参数设置:如图片尺寸(Width/Height)、生成步数(Steps)、引导强度(Guidance Scale)等。
  3. 生成按钮:点击后开始创作。

第一次使用建议

  • 提示词:先输入一个简单的描述,例如 a beautiful sunset at the beach
  • 图片尺寸:先选择 768x768,平衡速度和质量。
  • 生成步数:设置为 20
  • 其他参数保持默认,点击生成。

等待1到3分钟,你的第一张AI生成图片就会出现在下方!你可以右键点击图片直接保存。

4.3 基础管理命令

学会这几个命令,你就能轻松管理你的FLUX.1服务了:

# 停止服务
docker-compose down

# 启动服务
docker-compose up -d

# 重启服务(修改配置后常用)
docker-compose restart

# 查看实时日志
docker-compose logs -f

# 进入容器内部(用于高级调试)
docker exec -it flux1-ai-service /bin/bash

5. 常见问题与优化建议

部署和使用过程中可能会遇到一些小问题,这里列出一些常见的解决方案。

5.1 部署常见问题

Q1: 访问 http://IP:7861 打不开网页。

  • 检查1:服务状态。运行 docker-compose ps,确认状态是 Up
  • 检查2:端口映射。运行 docker port flux1-ai-service,确认7860端口确实映射到了宿主机的7861。
  • 检查3:防火墙。如果你的云服务器有安全组或防火墙,确保放行了 7861 端口的入站流量。对于Ubuntu UFW防火墙,可以运行 sudo ufw allow 7861
  • 检查4:IP地址。确保你输入的服务器IP是正确的。在服务器上运行 curl ifconfig.me 可以获取公网IP。

Q2: 运行时报错,提示找不到GPU或CUDA错误。

  • 解决:这通常是因为 nvidia-container-toolkit 没有正确安装或Docker没有重启。请重新执行“准备工作”章节中的第三步,并确保执行了 sudo systemctl restart docker
  • 验证:再次运行测试命令 docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi 确认基础环境OK。

Q3: 生成图片时速度非常慢,或者日志提示显存不足。

  • 降低配置:在Web界面中,尝试将图片尺寸从1024降低到768或512,将生成步数从30降低到20。
  • 检查独占进程:运行 nvidia-smi,查看是否有其他进程占用了大量显存。
  • 重启大法:有时候简单的重启容器能释放缓存:docker-compose restart

5.2 性能与使用优化

  1. 提示词技巧:AI对英文提示词的理解通常更好。尽量使用具体、详细的英文描述。例如,将 a dog 改为 a cute golden retriever puppy playing in a sunny garden, photorealistic, 8k
  2. 分辨率选择
    • 512x512: 快速构思和测试提示词效果。
    • 768x768: 日常使用的最佳选择,质量和速度兼顾。
    • 1024x1024及以上:需要高质量输出时使用,但耗时和显存占用会显著增加。
  3. 模型预热:服务刚启动时,第一次生成图片可能会比较慢,因为需要加载模型到显存。这是正常现象,后续生成就会变快。
  4. 资源监控:定期使用 nvidia-smidocker stats 命令监控GPU和容器的资源使用情况,确保服务稳定运行。

6. 总结

通过这篇教程,我们完成了一件很有成就感的事:从零开始,将一个强大的AI图像生成模型FLUX.1,通过Docker Compose的方式部署到了我们的服务器上,并成功配置了GPU加速和网络访问。

回顾一下关键步骤:

  1. 环境准备:确保服务器有NVIDIA显卡,并安装好Docker和GPU支持工具。
  2. 编写配置:创建一个 docker-compose.yml 文件,清晰定义了服务、端口映射、数据卷和最重要的GPU资源声明。
  3. 一键启动:运行 docker-compose up -d,所有依赖和服务自动拉起。
  4. 验证使用:通过浏览器访问服务,开始用文字创作图片。

这种部署方式的最大优势在于 “隔离”“可复现” 。所有依赖都被封装在容器里,不会污染你的主机环境。哪天你想换个服务器或者重装系统,只需要把 docker-compose.ymldata 目录拷贝过去,再次执行 docker-compose up -d,一模一样的服务就回来了。

现在,你的私人AI画师已经24小时在线待命了。无论是为文章配图、设计灵感探索,还是单纯体验AI创作的乐趣,它都能随时为你服务。接下来,就是尽情发挥你的想象力,用提示词去描绘万千世界了。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐