1. ubuntukylin-docker打包桌面
1.1 需要安装优麒麟的完整操作系统 通过tar执行打包因为proc sys dev run boot 是依赖于内核 启动时会自己生成
命令: tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
1.2 把tar包 导成docker-images
命令: cat /tmp/system.tar | docker import - ubuntukylin:v1
1.3 导入完成以后把 系统启动起来看是否有错误 如果有错误请重新打包
命令: docker -itd --name ubuntukylin1 -p 5900:5900 <镜像>
查看容器是否启动成功: docker ps -a
启动成功进入容器内部:docker exec -it <容器名称> bash
1.4 我们这个时候就需要安装 x11vnc xvfb 注:{打包的时候记得添加阿里云源 官方的特别慢}
命令: apt update 更新一下
apt install x11vnc -y
apt install xvfb -y
apt install supervisor -y
1.5 安装完成以后 我们配置vnc密码
配置密码
x11vnc -storepasswd
启动vnc服务
x11vnc -display :5 -once -loop -noxdamage -repeat -rfbauth ~/.vnc/passwd -rfbport 5900 -shared -scale 1920x1080 &
1.6 启动Xvfb
Xvfb :5 -screen 0 1920x1080x24
这里说一下 xvfb是一个虚拟卡的工具 x11vnc是一个远程桌面的工具
1.8 然后我们就可以查看一下 5900端口是否启动成功 或者查看x11vnc是否启动成功 有 PORT=5900 就是ok的
命令: ss -tlunp | grep 5900
1.9 现在我们需要通过vnc远程我们的桌面
下载一个vnc vnc的端口和ip远程 输入你设置的密码即可
1.10 能够看到桌面就是ok的 如果有 鼠标是X 或者是时间不对 你需要在ubuntukylin主机系统里面找到资源打进来
2. 把运行成功并且可以远程的vnc桌面容器打包成
命令: docker commit -m "xxxxx" -a "xxxxx" -p <这个是打包的时候停止容器> <容器名称> <需要打包成的images名称和版本>
3. 编写dockerfile 与脚本
3.1 因为ubuntukylin里面我们是通过 在容器里面配置好在打的容器images所以它不会自启动我们需要通过脚本或者其他的方式让images里面的
x11vnc xvfb 还有桌面开机就启动
3.2 编写vnc xvfb 桌面启动 脚本
在/opt/下面创建一个Docker命令 进去里面 mkdir Docker && cd Docker
然后我们开始写启动的shell脚本
#!/bin/bash
start_x11vnc=x11vnc -display :5 -once -loop -noxdamage -repeat -rfbauth ~/.vnc/passwd -rfbport 5900 -shared -scale 1920x1080 &
start_xvfb=Xvfb :5 -screen 0 1920x1080x24 &
start_ukui=DISPLAY=:1 ukui-session
rm /tmp/.X* -rf
def () {
funname_x11vnc () {
pgrep ukui >> /dev/null
#通过命令判断 ukui是否是启动成功的 在linux里 成功就是0 失败就是 1
if [ $? -eq 0 ];then
echo "x11vnc start ok..."
else
echo $start_x11vnc
fi
}
funname_xvfb () {
pgrep xvfb >> /dev/null
if [ $? -eq 0 ];then
echo "xvfb START ok..."
else
echo $start_xvfb
fi
}
funname_ukui () {
pgrep ukui >> /dev/null
if [ $? -eq 0 ];then
echo "ukui START ok..."
else
echo $start_ukui
fi
}
}
def #执行函数
supervisor #保持容器不退出 他也是一个 进程管理因为 容器没有前台进程是会退出的 还有一种投机取巧的方法就是 ping 8.8.8.8 或者 tail -f 日志
3.3 编写dockerfile
FROM ubuntukylin:v2
COPY start.sh /start.sh
COPY startgui.sh /home/dev/startgui.sh
RUN chown dev:dev -R /home/dev/startgui.sh
COPY vnc.conf /etc/supervisor/conf.d/vnc.conf
RUN chmod 777 /start.sh
RUN mkdir /var/run
ADD config.tar /home/dev/
RUN chown dev:dev -R /home/dev/.config/
ENTRYPOINT ["/start.sh"]
3.4 docker build -t
3.5 打包完成以后 通过 docker images 查看启动即可
<如果需要打包其他系统 只要是linux 都可以使用这个方法 但是 有一些启动的桌面 不一样 我这个是ukui的桌面 >
Xvfb :5 -screen 0 1920x1080x24
ukui-session --display :5
x11vnc -display :5 -once -loop -noxdamage -repeat -rfbauth ~/.vnc/passwd -rfbport 5900 -shared -scale 1920x1080 &