
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!https://raw.githubusercontent.com/kyzima-spb/docker-gui/refs/heads/master/preview.png
docker-gui 是用于在Docker中运行GUI应用程序的基础镜像。
注意
在Docker容器中运行GUI应用程序是个大胆的想法,但有时在服务器或当前操作系统上没有其他方式运行应用程序时,这会是一种解决方案。
以下以创建运行Chromium浏览器的新镜像为例进行说明。
在任意位置创建新目录用于存放镜像文件并进入该目录:
shell$ mkdir ~/docker-chromium $ cd ~/docker-chromium
接下来,创建如下所示的目录和文件结构:
. ├── Dockerfile └── root └── etc └── s6-overlay └── s6-rc.d ├── chromium │ ├── dependencies │ ├── run │ └── type └── user └── contents.d └── chromium
该镜像使用 https://github.com/just-containers/s6-overlay 服务管理器。因此,若要了解每个目录或文件的用途,建议参考官方文档。
文件 ./root/etc/s6-overlay/s6-rc.d/chromium/run 包含启动服务(本例中为浏览器)的代码。建议使用 execline 语言:
shell#!/command/execlineb -P with-contenv backtick -E HOME { homeof user } s6-env HOME="$HOME" redirfd -w 2 /dev/null s6-setuidgid user chromium --no-sandbox --start-maximized
在 ./root/etc/s6-overlay/s6-rc.d/chromium/type 文件中,指定服务类型:longrun - 启动时启动,若服务崩溃将自动重启(浏览器无法关闭)
longrun
在 ./root/etc/s6-overlay/s6-rc.d/chromium/dependencies 文件中,指定对其他服务的依赖(谁应先启动),每行一个依赖:
openbox
文件 ./root/etc/s6-overlay/s6-rc.d/user/contents.d/chromium 为空,它是一个链接,指示此服务已启用并应启动。
创建新的Dockerfile并安装应用程序及其所有必需依赖项,例如:
dockerfileFROM kyzimaspb/gui RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ rm -f /etc/apt/apt.conf.d/docker-clean; \ echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache \ && apt update && apt install -yq --no-install-recommends \ chromium COPY ./ /
构建名为 chromium 的镜像文件:
shell$ docker build -t chromium -f Dockerfile ./root
以守护模式运行名为 chromium_1 的容器,并将指定端口转发到主机的指定端口:
shell$ docker run -d --name chromium_1 \ -p 5900:5900 \ --shm-size 2g \ chromium
转发的端口:
5900 - 用于连接VNC客户端的TCP端口;停止运行中的容器:
shell$ docker stop chromium_1
XVFB_RESOLUTION - 虚拟X服务器的屏幕分辨率,默认值为 1280x720VNC_SERVER_PASSWORD - VNC服务器密码,默认未设置VNC_SERVER_PASSWORD_FILE - VNC服务器密码文件,默认未设置USER_UID - 用户ID,默认值为 1000USER_GID - 用户组ID,默认值为 1000使用VNC服务器连接密码 qwe123 在系统启动时自动启动容器:
shell$ docker run -d --name chromium_1 \ -p 5900:5900 \ --shm-size 2g \ -e VNC_SERVER_PASSWORD=qwe123 \ --restart unless-stopped \ chromium
Docker Compose中使用密钥的示例:
ymlsecrets: vnc_password: file: ./secrets/vnc_password services: chromium: build: context: ./root dockerfile: ../Dockerfile secrets: - vnc_password ports: - "5900:5900" environment: VNC_SERVER_PASSWORD_FILE: /run/secrets/vnc_password restart: unless-stopped
构建项目并运行:
shell$ docker compose --project-directory ./examples/chromium build $ docker compose --project-directory ./examples/chromium up
shell$ docker run -d --name chromium_1 \ -p 5900:5900 \ --shm-size 2g \ -e USER_UID=1001 \ -e USER_GID=1001 \ --restart unless-stopped \ chromium
示例源代码位于 examples/chromium 目录中。
RELEASE - Debian发行版的版本名称。可用值为 bookworm-slim、bookworm、bullseye-slim、bullseye、buster-slim、buster。默认值为 bookworm-slim。S6_DOWNLOAD_URL - https://github.com/just-containers/s6-overlay 的下载URL。默认值为 https://github.com/just-containers/s6-overlay/releases/download。S6_OVERLAY_VERSION - https://github.com/just-containers/s6-overlay 版本。默认值为最新版本。S6_ARCH - https://github.com/just-containers/s6-overlay 架构。默认值为 x86_64。RELEASE 构建参数允许指定Debian发行版的版本:
shell$ git clone https://github.com/kyzima-spb/docker-gui.git $ cd docker-gui/docker $ docker build -t gui \ --build-arg RELEASE=bullseye \ -f Dockerfile ./root
shell$ git clone https://github.com/kyzima-spb/docker-gui.git $ cd docker-gui/docker $ docker build -t gui \ --build-arg S6_OVERLAY_VERSION=3.1.2.0 \ -f Dockerfile ./root
克隆基础镜像的源代码,在 S6_ARCH 参数中指定架构,也可选择在 S6_OVERLAY_VERSION 参数中指定版本。所选版本的可用值可在 https://github.com/just-containers/s6-overlay/releases 上找到。
构建适用于Orange Pi的镜像示例:
shell$ git clone https://github.com/kyzima-spb/docker-gui.git $ cd docker-gui/docker $ docker build -t gui \ --build-arg S6_ARCH=armhf \ -f Dockerfile ./root
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务