惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
S
Securelist
V
Vulnerabilities – Threatpost
C
Cyber Attacks, Cyber Crime and Cyber Security
Schneier on Security
Schneier on Security
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
Hacker News - Newest:
Hacker News - Newest: "LLM"
P
Palo Alto Networks Blog
T
Troy Hunt's Blog
SecWiki News
SecWiki News
Security Archives - TechRepublic
Security Archives - TechRepublic
T
The Blog of Author Tim Ferriss
Project Zero
Project Zero
Microsoft Security Blog
Microsoft Security Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
F
Full Disclosure
阮一峰的网络日志
阮一峰的网络日志
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Attack and Defense Labs
Attack and Defense Labs
Know Your Adversary
Know Your Adversary
WordPress大学
WordPress大学
PCI Perspectives
PCI Perspectives
N
News | PayPal Newsroom
The Last Watchdog
The Last Watchdog
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
CERT Recently Published Vulnerability Notes
H
Help Net Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
云风的 BLOG
云风的 BLOG
月光博客
月光博客
T
The Exploit Database - CXSecurity.com
I
InfoQ
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
腾讯CDC
小众软件
小众软件
V2EX - 技术
V2EX - 技术
罗磊的独立博客
Cloudbric
Cloudbric
Recorded Future
Recorded Future
IT之家
IT之家
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com

泠泫凝的异次元空间

通过串口安装Linux | 泠泫凝的异次元空间 curl自编译 | 泠泫凝的异次元空间 Minecraft 认证服务器代理 | 泠泫凝的异次元空间 飞塔分流配置实战 | 泠泫凝的异次元空间 Windows 安全启动证书检查 | 泠泫凝的异次元空间 Lxn-OneDriveCLI | 泠泫凝的异次元空间 华三交换机配置 ERPS 环网 | 泠泫凝的异次元空间 PVE 配置 VLAN 感知 | 泠泫凝的异次元空间 MT7922 无线网卡安装 | 泠泫凝的异次元空间 无显示输出 Linux 主机配置桌面显示 | 泠泫凝的异次元空间 Wireguard 部署 SOP 手册(自用) | 泠泫凝的异次元空间 Zabbix 7.4 通过钉钉发送告警提醒 | 泠泫凝的异次元空间 Debian with xfce 通过 VNC 共享屏幕 华三S6860 IRF堆叠 | 泠泫凝的异次元空间 iPad 应用侧载 | 泠泫凝的异次元空间 Smart DNS 分区解析 | 泠泫凝的异次元空间 建立 NFS 服务器并挂载到客户端 | 泠泫凝的异次元空间 将 Android 以 MTP 方式连接至 Debian PVE 虚拟机迁移至 vCenter | 泠泫凝的异次元空间 vCenter 虚拟机迁移至 PVE | 泠泫凝的异次元空间 PVE迁移时提示密钥验证失败 | 泠泫凝的异次元空间 修改Windows设备设置区域 | 泠泫凝的异次元空间 恢复 SecureCRT 7.x 保存的密码 | 泠泫凝的异次元空间 PVE 超融合下电与上电流程 | 泠泫凝的异次元空间 记一次Zabbix异常处理 | 泠泫凝的异次元空间 苹果设备保存SHSH2 | 泠泫凝的异次元空间 PVE超融合部署 | 泠泫凝的异次元空间 树莓派启用zram | 泠泫凝的异次元空间 在 Hyper-V 上安装 EVE-NG | 泠泫凝的异次元空间 Zabbix 部署与 Windows 硬件信息收集 | 泠泫凝的异次元空间 在WSL2中安装CUDA支持 | 泠泫凝的异次元空间 MinIO 集群部署 | 泠泫凝的异次元空间 vmware 虚拟化平台备份工具 Veeam 12 安装及配置 ubuntu 24.04 安装 nVidia 驱动后网卡消失 XMRig 自编译 | 泠泫凝的异次元空间 云桌面通过组策略统一体验配置 | 泠泫凝的异次元空间 Fortigate SSLVPN 无法连接内网 VNC 服务器 CentOS 7 使用镜像作为本地源并将自身作为YUM源服务器 | 泠泫凝的异次元空间 CentOS 7 离线更新 OpenSSH 服务 使用KubeKey离线部署Kubernetes | 泠泫凝的异次元空间 使用PGP对消息进行签名 | 泠泫凝的异次元空间 禁止MinIO展示桶内文件列表 | 泠泫凝的异次元空间 华为 Fusion Access 云桌面部署 | 泠泫凝的异次元空间 vmware Horizon 模板机部署 | 泠泫凝的异次元空间 vmware Horizon 云桌面与云应用部署 | 泠泫凝的异次元空间 Citrix XenApp 云应用交付 | 泠泫凝的异次元空间 Citrix XenDesktop 云桌面部署 | 泠泫凝的异次元空间 PVE LVM 扩容 | 泠泫凝的异次元空间 Linux 网络聚合(bond方式) | 泠泫凝的异次元空间 Citrix XenServer 7.2 部署教程 | 泠泫凝的异次元空间 在 Windows Server 2019 上安装 AMD 显卡驱动 openEuler 安装并使用 EPEL 源 | 泠泫凝的异次元空间 下载联想原厂镜像及解密 | 泠泫凝的异次元空间 在基于 arm 架构的服务器上安装 PVE | 泠泫凝的异次元空间 自制 EVE-NG 镜像 | 泠泫凝的异次元空间 不使用 Snap 在 ubuntu 上安装 Chromium 浏览器 Fortigate 6.2 固件从 PPPoE 获得 IPv6 地址 Fortigate 手记 | 泠泫凝的异次元空间 Fortigate 通过命令行自定义 NTP 服务器 | 泠泫凝的异次元空间 arm 架构 CentOS 7 安装 MySQL 5.7 版本 ubuntu 20 安装计算卡驱动和 CUDA Toolkit 锐捷诺客云添加设备后一直显示“等待同步” | 泠泫凝的异次元空间 Windows 10 自动登录 | 泠泫凝的异次元空间 OpenWRT IPv6 防火墙设置 | 泠泫凝的异次元空间 k8s 部署踩坑合集 | 泠泫凝的异次元空间 改变 Ubuntu TTY 终端字体 | 泠泫凝的异次元空间 Parted 无损扩容磁盘分区 | 泠泫凝的异次元空间 NTP服务器测试 | 泠泫凝的异次元空间 【相亲相爱】2024祝大家!新年快乐!!! ESXi中重新挂载数据盘 | 泠泫凝的异次元空间 使用 MediaMTX + RTSP 搭建低延迟直播服务器 Firewalld 手记 | 泠泫凝的异次元空间 Ubuntu 上不使用 snapd 安装 Firefox 在 armbian 上安装 xfce 和 VNC 做远程桌面 在 ubuntu 20 上使用 TigerVNC 做远程桌面 在 openEuler 上部署安装 openGauss | 泠泫凝的异次元空间 Wireguard 组网笔记 | 泠泫凝的异次元空间 让特定IP(段)走VPN连接 | 泠泫凝的异次元空间 在Wireguard中排除部分IP(段) | 泠泫凝的异次元空间 CentOS 7 上升级 OpenSSL | 泠泫凝的异次元空间 将黑群晖部署到ESXi(笔记) | 泠泫凝的异次元空间 apk 代码反编译笔记 | 泠泫凝的异次元空间 Windows 搭建 iSCSI 服务器全攻略 | 泠泫凝的异次元空间 CentOS 7 编译安装 Python 3 开源语音识别工具 Whisper | 泠泫凝的异次元空间 Ubuntu 下 Python 编译安装及关联问题解决 | 泠泫凝的异次元空间 Ansible Tower 安装 | 泠泫凝的异次元空间 提高 PowerPoint 导出到图片时的分辨率 | 泠泫凝的异次元空间 利用亚马逊云服务器和VPC 构建安全可靠的虚拟网络 | 泠泫凝的异次元空间 Windows Server 多网卡链路聚合 | 泠泫凝的异次元空间 MT3000路由+移远EC20模块体验 | 泠泫凝的异次元空间 Python安装依赖时出现ctype问题 | 泠泫凝的异次元空间 GL-MT3000日用设置 | 泠泫凝的异次元空间 解除 vCenter 的最低内存限制 | 泠泫凝的异次元空间 跳过Windows 11的强制联网和账户登录 | 泠泫凝的异次元空间 Cloudflare Trace API 信息详解 | 泠泫凝的异次元空间 在CentOS中搭建由nginx反代和Apache2作为后端的Wordpress | 泠泫凝的异次元空间 通过nginx进行文件共享 | 泠泫凝的异次元空间 禁用 sudo 时密码认证 | 泠泫凝的异次元空间 在docker中一键搭建IPSec/IKEv2 VPN | 泠泫凝的异次元空间
从已有Linux系统创建带桌面环境的Docker镜像 | 泠泫凝的异次元空间
Lxn's Area · 2024-09-29 · via 泠泫凝的异次元空间

需求如下:需要在docker容器中起一套桌面环境,连接方式为VNC。本文将从头开始创建一个满足上述需求的原生docker镜像。

版本对照表

注意:目前本文中安装tigervnc的方法仅适用于ubuntu 20.04,18和22都存在问题,仅供参考。

ubuntu虚拟机(docker镜像母盘)

项目版本备注
大版本Ubuntu 20.04.6 LTS Server下载地址
内核版本5.4.0-196-generic
xfce4.14

docker客户端

项目版本备注
系统分支openEuler 20.03 (LTS-SP3)下载地址
内核版本4.19.90-2401.1.0.0233.oe1.x86_64
docker27.3.1, build ce12230

母盘准备

这一节主要是创建docker镜像的母盘,核心思想是创建一个体积较小的带桌面的操作系统。因为这一步较为简单因此大部分步骤都会被略过。

准备操作系统

  1. 新建虚拟机,在虚拟机中挂载ubuntu 20的iso,然后正常安装Server版本即可
  2. 进入系统后首先执行sudo apt upgrade -y确保所有软件包都是最新版本,然后安装tasksel以安装桌面环境
    1
    sudo apt install dialog tasksel -y
  3. 在tasksel中选择“Xubuntu minimal installation”,确定后等待安装完成,随后重启。
  4. 安装tigervnc:
    1
    sudo apt install tigervnc-standalone-server -y
    随后在非root账户下执行vncpasswd设置VNC连接密码
  5. 建立~/.vnc/xstartup配置文件:
    1
    2
    3
    4
    #!/bin/sh
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    exec startxfce4
    加执行权限:
    1
    chmod +x ~/.vnc/xstartup
  6. 测试VNC是否安装正确:
    1
    vncserver -localhost no -geometry 1280x720 -depth 24
    此时可以在其他客户端上连接本机5901端口查看是否能够连接以及图像是否正常。
    测试正常后执行如下命令干掉测试用的实例:
    1
    vncserver -kill :1
  7. 这一步正常是创建VNC Server的systemd服务,但是由于docker中并不使用systemd管理服务,因此创建了也没用,所以此步跳过,之后可能会写额外的文章专门介绍这一部分。
  8. 清理系统缩小镜像大小,逐条执行即可:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    apt purge snapd --auto-remove -y
    apt autoremove -y
    apt autoclean
    sync; echo 3 > /proc/sys/vm/drop_caches
    rm -rf /var/lib/apt/lists/*
    rm -rf /tmp/*
    rm -rf /var/tmp/*
    rm -rf /var/cache/*
    find /var/log -type f -delete
    rm -rf /var/log/*
    dpkg --list | awk '$1=="ii" {print $2}' | grep linux-image | grep -v $(uname -r) | xargs sudo apt-get remove --purge -y
  9. 禁用swap:
    1
    swapoff -a
    随后删除/etc/fstab中的swap挂载行即可。

打包系统

这一节就一条命令:

1
2
3
tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys \
--exclude=dev --exclude=run --exclude=boot --exclude=.history \
--exclude=Templates --exclude=.bash_history --exclude=/var/log/journal/* .

等待执行完成即可,最终打包好的文件在/tmp/system.tar

这一节主要是最终生成镜像并运行测试。

  1. 导入系统包:
    1
    cat system.tar | docker import - ubuntu-vnc-20.04:1.2
    其中最后一部分是镜像名和标签名,可以自行更改。
  2. 创建dockerfile用的文件夹,然后创建dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    FROM ubuntu-vnc-20.04:1.2


    ARG DEBIAN_FRONTEND=noninteractive
    ENV TZ=Asia/Shanghai


    ADD run.sh /run.sh
    RUN chmod 755 /run.sh


    EXPOSE 22 5901
    CMD ["/run.sh"]
  3. 创建执行脚本run.sh
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash


    rm -f /tmp/.X1-lock
    su lxnchan -c "/usr/bin/vncserver -localhost no -depth 24 -geometry 1920x1080 :1"


    mkdir -p /run/sshd
    /usr/sbin/sshd -D
  4. 此时你应该具备如下的文件和镜像:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@localhost ubuntu-desktop-vnc]# ls -la
    total 16
    drwxr-xr-x 2 root root 4096 Sep 29 21:20 .
    dr-xr-x---. 5 root root 4096 Sep 29 20:44 ..
    -rw-r--r-- 1 root root 298 Sep 29 21:25 dockerfile
    -rw-r--r-- 1 root root 154 Sep 29 21:27 run.sh
    [root@localhost ubuntu-desktop-vnc]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    ubuntu-vnc-20.04 1.2 33df6c7db864 2 hours ago 2.74GB
  5. 创建最终镜像:
    1
    docker build -t ubuntu-desktop-vnc-20.04:1.4 .
    执行结果应该是:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [root@localhost ubuntu-desktop-vnc]# docker build -t ubuntu-desktop-vnc-20.04:1.4 .
    [+] Building 0.2s (8/8) FINISHED docker:default
    => [internal] load build definition from dockerfile 0.0s
    => => transferring dockerfile: 337B 0.0s
    => [internal] load metadata for docker.io/library/ubuntu-vnc-20.04:1.2 0.0s
    => [internal] load .dockerignore 0.0s
    => => transferring context: 2B 0.0s
    => [internal] load build context 0.0s
    => => transferring context: 189B 0.0s
    => CACHED [1/3] FROM docker.io/library/ubuntu-vnc-20.04:1.2 0.0s
    => [2/3] ADD run.sh /run.sh 0.0s
    => [3/3] RUN chmod 755 /run.sh 0.1s
    => exporting to image 0.0s
    => => exporting layers 0.0s
    => => writing image sha256:7ec1df01655a2664891838d39d8528ba69e2b193aa8715182b47a274eabb2c2d 0.0s
    => => naming to docker.io/library/ubuntu-desktop-vnc-20.04:1.4 0.0s
  6. 最后运行查看效果:
    1
    docker run -d -p 17222:22 -p 5901:5901 ubuntu-desktop-vnc-20.04:1.4
    可以通过docker logs -f [container]查看日志:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@localhost ubuntu-desktop-vnc]# docker run -d -p 17222:22 -p 5901:5901 ubuntu-desktop-vnc-20.04:1.4
    b0be8b6efab02b9545065c15d51ef9aa6ec115d8a4abd22313b898c4f0679fa5
    [root@localhost ubuntu-desktop-vnc]# docker logs -f b0

    New 'b0be8b6efab0:1 (lxnchan)' desktop at :1 on machine b0be8b6efab0

    Starting applications specified in /home/lxnchan/.vnc/xstartup
    Log file is /home/lxnchan/.vnc/b0be8b6efab0:1.log

    Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/lxnchan/.vnc/passwd b0be8b6efab0:1 to connect to the VNC server.

    ^Ccontext canceled
    并且最后使用VNC Viewer查看即可得到头图效果。

 上一篇

Linux openEuler