你能把 convert/build 一张 docker 图片变成完整的 OS 图片吗?

Can you convert/build a docker image into a full OS image?

我制作了一个 docker 容器,其中包含一些部署代码。但是,我意识到我正在使用的项目的结构更适合部署完整的 ISO 映像,而不是 运行 docker 在云 VM 运行 库存之上debian,导致不必要的虚拟化层。

我知道 dockers 是要部署在 kubernetes 上的,但是在深入研究该路线之前,是否有一种简单的方法可以将 deb9 docker 映像转换为完整的 deb9 OS 图片?就像 docker import 的对立面?

Docker 图像不包含 Linux 内核,并且未配置为执行诸如 运行 完整初始化系统或外出获取其网络配置之类的事情,因此这不会很好用。

换句话说:同样的不匹配导致 docker import 无法很好地工作,因为生成的容器将包含太多东西并且不会为 Docker 设置,这意味着您不能将容器或映像导出到 VM 并期望它在该环境中工作。

但是!如果您已经为图像编写了一个 Docker 文件,那就非常接近 "I'm going to start from this base Linux distribution and run this shell script to get an image"。 Packer 等工具被设置为获取基础 Linux VM 映像,运行 某种配置程序,并创建一个新映像。如果您已经有了良好的 Docker 设置,并且认为 VM 更适合,那么您可能已经完成了大量的腿部工作来自动构建您的 VM 映像。

您可以将 docker 容器 转换为完整的 os 图像。一个 Dockerfile debian 示例是

FROM debian:stretch
RUN apt-get -y install --no-install-recommends \
  linux-image-amd64 \
  systemd-sysv

原则上你必须安装内核和初始化系统。

可以找到完整的说明github