Rocky9+ Docker + 容器内Linux桌面环境 + Web远程
一、整体架构设计Rocky9宿主机无GUI │ ├── Docker │ ├── 容器1Rocky9 XFCE noVNC ToDesk │ ├── 容器2Rocky9 XFCE noVNC ToDesk │ └── 容器3Rocky9 XFCE noVNC ToDesk │ ├── 访问方式 │ ├── 内网浏览器访问 noVNChttp://IP:6081/6082/6083二、核心技术选型1️⃣ Web访问桌面使用VNC noVNC浏览器直接访问桌面 推荐组合tigervnc-servernoVNC websockify2️⃣ 桌面环境Rocky9 XFCE二、Docker镜像设计核心你需要自定义镜像重点1️⃣ DockerfileFROM rockylinux:9 # 基础工具 RUN dnf -y update --allowerasing \ dnf -y install epel-release \ dnf -y install --allowerasing \ procps \ net-tools \ sudo \ wget \ curl \ which \ xauth \ dbus-x11 \ dnf -y groupinstall Xfce \ dnf -y install tigervnc-server novnc python3-websockify \ dnf clean all # 创建普通用户 RUN useradd -m user echo user:123456 | chpasswd # 赋予 sudo 权限关键 RUN echo user ALL(ALL) NOPASSWD:ALL /etc/sudoers # 拷贝启动脚本 COPY start.sh /start.sh RUN chmod x /start.sh RUN mkdir -p /home/user/.vnc \ chown -R user:user /home/user/.vnc # 暴露端口 EXPOSE 5901 6080 # 默认执行 CMD [/start.sh]2️⃣ 启动脚本 start.sh#!/bin/bash USERuser HOME/home/user DISPLAY:1 # 强制清理旧 VNC session关键 rm -rf /tmp/.X1-lock /tmp/.X11-unix/X1 rm -rf $HOME/.vnc/*.pid # 设置 VNC 密码每次启动都保证存在 mkdir -p /home/user/.vnc echo 123456 | vncpasswd -f /home/user/.vnc/passwd chown -R user:user /home/user/.vnc chmod 600 /home/user/.vnc/passwd # 写 xstartup防止被覆盖 cat $HOME/.vnc/xstartup EOF #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS export XDG_RUNTIME_DIR/tmp/runtime-user mkdir -p $XDG_RUNTIME_DIR chmod 700 $XDG_RUNTIME_DIR exec dbus-launch --exit-with-session startxfce4 EOF chown user:user $HOME/.vnc/xstartup chmod x $HOME/.vnc/xstartup # 启动 VNC前台模式更稳定 su - $USER -c vncserver :1 -geometry 1280x800 -depth 24 # 启动 noVNC必须绑定 0.0.0.0 su - $USER -c websockify --web/usr/share/novnc 0.0.0.0:6080 localhost:5901 # 保持容器运行 tail -f $HOME/.vnc/*.log三、完整实现步骤1️⃣ 安装 DockerRocky9省略2️⃣ 创建项目目录mkdir -p /opt/docker-desktop cd /opt/docker-desktop 将Dockerfile, start.sh和todesk.rpm都移动到这里3️⃣ 构建镜像构建镜像 docker build -t rocky9-xfce-vnc . 如果是重新构建镜像 docker build --no-cache -t rocky9-xfce-vnc .四、使用Docker Compose批量管理docker容器1️⃣ 创建docker-compose.yml在/opt/docker-desktop目录下创建docker-compose.ymlversion: 3.9 services: desktop1: image: rocky9-xfce-vnc container_name: desktop1 ports: - 6081:6080 - 5901:5901 restart: always desktop2: image: rocky9-xfce-vnc container_name: desktop2 ports: - 6082:6080 - 5902:5901 restart: always desktop3: image: rocky9-xfce-vnc container_name: desktop3 ports: - 6083:6080 - 5903:5901 restart: always2️⃣一键启动docker compose up -d3️⃣ 一键关闭docker compose down五、浏览器验证关闭宿主机防火墙systemctl stop firewalld1️⃣ 内网浏览器http://宿主机IP:6081http://宿主机IP:6082http://宿主机IP:6083 输入 VNC 密码123456注意是使用http不是https
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2444857.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!