docker中的linux容器实现窗口运行

74   /   0   /   0   /   0   /   发布于 129天前
# 一、在 Docker 容器中使用 X11 转发 允许你将 Linux 宿主机的 GUI 应用程序显示在宿主机的图形界面上,通常用于运行图形界面程序如桌面环境、IDE 或者某些需要图形界面的应用。 1. 确保你的 Linux 主机上安装了 X11 转发工具,如 `xauth` 和 `xhost` ``` sudo apt install xauth x11-apps ``` 2. 配置 Docker 以允许 X11 转发,重启后会失效,***出现错误***,可以写入启动加载文件 ``` xhost +local:root # 允许 root 用户从本地机器访问 X server,把当前sudo用户也加进来 ``` # 二、创建容器 ``` sudo docker run -it --name debian-desktop debian ``` **进入容器:** ``` sudo docker exec -it debian-desktop bash ``` **更换国内更新源**,参照https://m.wiseai.cn/topic/218 **安装桌面环境xfce:** ``` apt update && apt install -y \ xfce4 \ xfce4-goodies \ xorg \ openbox \ dbus \ dbus-x11 \ --no-install-recommends ``` **配置dbus** ``` mkdir -p /var/run/dbus dbus-uuidgen --ensure ``` **在/bin/下建立start.sh并写入:** ``` #!/bin/sh DBUS_SESSION_BUS_ADDRESS=unix:path=/var/run/dbus/system_bus_socket export DBUS_SESSION_BUS_ADDRESS #--config-file=/usr/share/dbus-1/system.conf这个参数有点问题 #dbus-daemon --system --config-file=/usr/share/dbus-1/system.conf --nofork --print-pid --print-address > /var/log/dbus.log 2>&1 dbus-daemon --system --nofork --print-pid --print-address > /var/log/dbus.log 2>&1 tail -f /dev/null ``` # 三、创建镜像 **一个中间镜像,用test命名** ``` sudo docker commit -m "test" -a "wiseai" debian-desktop test ``` **测试运行一次:** ``` sudo docker run -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $HOME/.Xauthority:/root/.Xauthority:ro \ --name test \ test /bin/start.sh sudo docker exec test xfce4-session ``` **安装必要程序:** ``` # 更新软件源 apt update apt upgrade # 安装常用中文字体包 apt install -y fonts-wqy-zenhei fonts-wqy-microhei fonts-arphic-ukai fonts-arphic-uming xfonts-intl-chinese # 安装思源字体(可选) apt install -y fonts-noto-cjk # 刷新字体缓存 fc-cache -fv apt install locales bash-completion apt install pulseaudio pavucontrol ``` 修改/etc/locale.gen,将zh_CN.UTF-8 UTF-8和en_US.UTF-8 UTF-8前的 `#`号去掉 ``` locale-gen ``` **生成正式镜像** ``` sudo docker commit -m "desktop" -a "wiseai" test debian-desktop:v1 ``` # **四、容器运行** ``` sudo docker run -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $HOME/.Xauthority:/root/.Xauthority:ro \ --device /dev/snd:/dev/snd \ -e LANG=zh_CN.UTF-8 \ --volume /run/user/$(id -u)/pulse:/run/user/0/pulse \ -e PULSE_SERVER=unix:/run/user/0/pulse/native \ --name debian-desktop \ debian-desktop:v1 // 可添加--privileged参数,如果你需要完整的访问权限 // user/后面那个0,是容器里用户的id ``` 运行后,直接关闭终端,因tail -f /dev/null的原因,没法结束 打开窗口界面 ``` sudo docker exec debian-desktop xfce4-session ``` # 五、优化界面 1. 安装字体 ``` # 更新软件源 sudo apt update # 安装常用中文字体包 sudo apt install -y fonts-wqy-zenhei fonts-wqy-microhei fonts-arphic-ukai fonts-arphic-uming xfonts-intl-chinese # 安装思源字体(可选) sudo apt install -y fonts-noto-cjk # 刷新字体缓存 sudo fc-cache -fv ```
  • 共 0 条回复
  • 需要登录 后方可回复, 如果你还没有账号请点击这里注册
梦初醒 茅塞开
  • 不经他人苦,莫劝他人善。
  • 能量足,心态稳,温和坚定可以忍。
  • 辛苦决定不了收入,真正决定收入的只有一个,就是不可替代性。
  • 要么忙于生存,要么赶紧去死!
  • 内心强大到混蛋,比什么都好!
  • 规范流程比制定制度更重要!
  • 立志需要高远,但不能急功近利;
    行动需要迅速,却不可贪图速成。
  • 不要强求人品,要设计高效的机制。
  • 你弱的时候,身边都是鸡零狗碎;
    你强的时候,身边都是风和日丽。
  • 机制比人品更可靠,契约比感情更可靠。
  • 合作不意味着没有冲突,却是控制冲突的最好方法。
  • 误解是人生常态,理解本是稀缺的例外。
  • 成功和不成功之间,只差一次坚持!
  • 祁连卧北雪,大漠壮雄关。
  • 利益顺序,过程公开,机会均等,付出回报。