IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在 nspawn 里运行 docker

    依云发表于 2023-06-28 19:38:23
    love 0

    有个服务器需要维护,因此需要将其上的所有服务暂时迁移走。打算直接扔到另一台比较闲的服务器上,直接拿 systemd-nspawn 跑起来得了。简单方便,除了网络之外不需要额外配置。但问题是,这些服务里包含一个使用 docker 运行的 ElasticSearch,在同为容器的 nspawn 里跑会有问题吗?

    试了一下,还真有的问题。dockerd 会报权限错误而跑不起来。但稍微搜一下就找到了解决方案:

    SYSTEMD_SECCOMP=0 systemd-nspawn --capability=all --network-bridge=br0 --boot -D rootfs
    

    nspawn 默认会限制一些权限。这样可以让其不做任何限制,相当于 docker 的 --privileged 参数。然后就可以嵌套着跑啦。

    跑起来之后检查一下,所有服务均正常运作了,没有任何问题。把网络配好,外边的 nginx 负责一下转发(因为懒所以没配外网 IP),就可以接替工作啦。

    PS: 迁移的过程中遇到了一个小坑。rsync 不加 --numeric-ids 的话会尽量保持用户名不变,等里边的系统跑起来就各种权限问题了。所以转移 rootfs 的时候一定得记着加上 --numeric-ids。



沪ICP备19023445号-2号
友情链接