封装成开箱即用的docker

封装成开箱即用的docker

创建 Dockerfile文件

复制代码
FROM registry.cn-beijing.aliyuncs.com/bladeai/multi-agent-backend-base:latest

WORKDIR /app
USER root

# 合并所有系统依赖和 Chrome 安装
RUN apt-get update && apt-get install -y \
    wget \
    gnupg \
    libx11-6 \
    libxcomposite1 \
    libasound2t64 \
    fonts-liberation \
    libu2f-udev \
    libvulkan1 \
    --no-install-recommends \
    && wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
    && apt-get install -y ./google-chrome-stable_current_amd64.deb --no-install-recommends \
    && rm google-chrome-stable_current_amd64.deb \
    && rm -rf /var/lib/apt/lists/*

# 后续步骤保持不变
COPY pyproject.toml uv.lock ./
RUN uv sync --no-cache --no-dev

COPY . .

ENV PATH="/app/.venv/bin:$PATH"
ENV CHROME_PATH="/usr/bin/google-chrome"

EXPOSE 8000

CMD ["uv", "run", "main.py"]

构建docker

复制代码
docker build -t common-research-browser:v1 .

查看已经创建的 docker 镜像

复制代码
docker images

warning02@Admin:/mnt/d/workspace/multi-agent$ docker images
REPOSITORY                                                          TAG       IMAGE ID       CREATED          SIZE
common-research-browser                                             v1        e744dae715e9   19 minutes ago   3.12GB
common-research-browser                                             v2        e744dae715e9   19 minutes ago   3.12GB
mcr.microsoft.com/playwright/mcp                                    latest    d5f30c953ff6   2 weeks ago      972MB
registry.cn-beijing.aliyuncs.com/bladeai/multi-agent-backend-base   latest    a904b4cca9bc   6 weeks ago      1.03GB

测试运行docker

复制代码
docker run -it --name test_browser common-research-browser:v1 /bin/bash

输入 exit 退出 docker

复制代码
exit

正式启动multi-agent的服务

复制代码
docker run -d -p 8000:8000 --name research_agent common-research-browser:v1

warning02@Admin:/mnt/d/workspace/multi-agent$ docker run -d -p 8000:8000 --name research_agent common-research-browser:v2
c9b545b505096920c93e458da3c0f499347a78a290343d774adae6531f127703

启动multi-agent的服务,同时将主机的显示接口X11挂载到容器里

bash 复制代码
docker run -d \
  -p 8000:8000 \
  --name common_research \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  common-research-browser:v1

端口映射会被警告,直接使用主机网络(--net=host),并且给予容器更高的权限以解决部分资源访问受限等限制(--privileged)

bash 复制代码
docker run -d \
  --name common_research \
  --privileged \
  --net=host \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  common-research-browser:v1

报错说这个名字的容器已经被 id 为 xxx 的容器使用了

bash 复制代码
warning02@Admin:/mnt/d/workspace/multi-agent$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
warning02@Admin:/mnt/d/workspace/multi-agent$ docker run -d -p 8000:8000 --name research_agent common-research-browser:v1
docker: Error response from daemon: Conflict. The container name "/research_agent" is already in use by container "7e13b2c08321ee53f0819fd2a9df6db26724dfd5d32e46097cc10ae9b8a3f26e". You have to remove (or rename) that container to be able to reuse that name.

Run 'docker run --help' for more information

执行 docker ps -a 指令,查看所有容器(包括运行的和没运行的)

bash 复制代码
warning02@Admin:/mnt/d/workspace/multi-agent$ docker ps -a
CONTAINER ID   IMAGE                        COMMAND            CREATED        STATUS                      PORTS     NAMES
fd67c10ed030   common-research-browser:v1   "uv run main.py"   15 hours ago   Exited (143) 15 hours ago             research_agent_gui

之前已经创建有了,那么,直接使用现有容器

复制代码
docker start research_agent

如果终端返回容器名,说明容器已经重新启动了

bash 复制代码
warning02@Admin:/mnt/d/workspace/multi-agent$ docker start research_agent
research_agent
warning02@Admin:/mnt/d/workspace/multi-agent$ docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED        STATUS          PORTS                                         NAMES
7e13b2c08321   common-research-browser:v1   "uvicorn server.app:..."   16 hours ago   Up 33 seconds   0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp   research_agent

若想进入容器的终端,执行 docker exec 指令

复制代码
docker exec -it research_agent /bin/bash

输入 exit 退出,没有看到uv run main.py 跑的服务输出的日志,但是 uv run main.py 跑的服务其实仍在进行

输入 docker logs 查看跑的容器中的服务日志

bash 复制代码
warning02@Admin:/mnt/d/workspace/multi-agent$ docker logs -f research_agent
Downloading jedi (1.5MiB)
Downloading pyright (5.7MiB)
Downloading debugpy (4.0MiB)
 Downloaded jedi
 Downloaded debugpy
 Downloaded pyright
Installed 28 packages in 567ms
[02/03/26 03:05:58] INFO     日志系统已初始化               custom_logger.py:185
[02/03/26 03:06:01] INFO     Loading config from:                   config.py:24
                             /app/server/configs/config.conf
                    INFO     Loading model config from:             config.py:25
                             /app/server/configs/models.yaml

按 ctrl + c 停止查看日志,但不会停止服务

通过 docker cp 将宿主机的文件,移动到 docker 容器中

复制代码
docker cp start_chrome.py common_research:/app/agent_templates/common_research_browser
bash 复制代码
warning02@Admin:/mnt/d/workspace/multi-agent/agent_templates/common_research_browser$ docker cp start_chrome.py common_research:/app/agent_templates/common_research_browser
Successfully copied 6.66kB to common_research:/app/agent_templates/common_research_browser

docker stop 停止之前容器中启动的服务

复制代码
docker stop common_research

warning02@Admin:/mnt/d/workspace/multi-agent$ docker stop common_research
common_research

删除之前停止的容器

复制代码
docker rm -f research_agent test_browser

warning02@Admin:/mnt/d/workspace/multi-agent$ docker rm -f research_agent test_browser
research_agent
test_browser

删除之前构建的镜像(先删除使用这些镜像的容器,再删除这些镜像)

复制代码
docker rmi common-research-browser:v1 common-research-browser:v2
相关推荐
WangMingHua1113 小时前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn866 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
2601_961875246 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj6 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵6 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏6 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主6 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang6 天前
Docker 使用完整指南
运维·docker·容器