因工作需要,需求是在docker的ubuntu系统容器里面启动systemctl服务
测试很多方案,可能是网络原因,也可能是虚拟机的原因(没有在真实物理机上测试)导致以下方案在我的虚拟机里面均没有测试成功. 后需求变更,这个功能点不需要了,因此不再继续深入.现将找到的方案逐项列出,有兴趣的小伙伴可以测试看看,建议查看原文:
- docker社区论坛里面有几个方案(地址)
- Dockerfile 内执行 /usr/sbin/init 命令启动 systemctl
- docker run -v 宿主机挂载后 exec 启动 systemctl
- 启用 sysbox 后自动启动 systemctl
- 构建compose文件启动systemctl(地址)
其中 sysbox 这个感觉最靠谱一些, 在项目描述里面直接提到了可以启动systemctl, 可惜当前时间 sysbox 还没有推出正式版,版本号从零点开始的,测试的时候注意系统要求:
附: 查找期间找到了一个docker内启动ubuntu后可用通过vnc连接内部ubuntu桌面
来源: https://hub.docker.com/r/kasmweb/ubuntu-jammy-desktop
# 启动流程
# 拉取镜像
docker pull kasmweb/ubuntu-jammy-desktop:1.14.0
# 启动容器,配置vnc端口和登录密码
sudo docker run --rm -it --shm-size=512m -p 6901:6901 -e VNC_PW=password kasmweb/ubuntu-jammy-desktop:1.14.0
# 默认账户名
User : kasm_user
# 在宿主机浏览器内访问docker启动的电脑ip加端口
https://IP_OF_SERVER:6901
当前镜像由 kasm 公司提供,该公司提供线上demo 网址,可直接访问外网 3 分钟(计时是从创建demo链接开始算起,实际可用时间应该比3分钟要短)