我可以在Docker中作为访客运行Snappy Ubuntu Core吗?

我知道Snappy Ubuntu可以托管Docker容器。 我的问题是它是否也可以作为Docker来宾在容器内运行。

我问的原因是我在公共Docker存储库中找不到任何Snappy VM来宾容器。

是的,你可以:Snappy只是Ubuntu的简化版本,而Ubuntu在Docker中运行。 事实上,Snappy没有出现在公共Docker存储库中,这意味着您必须手动执行操作。

  1. 首先,获取最新图像:

    wget http://cdimage.ubuntu.com/ubuntu-core/preview/ubuntu-core-alpha-02_amd64-virt.img 

    此文件是用于QEMU / KVM的QCOW2映像,但我们也可以为Docker提取其内容。

  2. 要访问QCOW2映像中的文件,您需要qemu-nbd ,所以安装它并运行:

     qemu-nbd -c /dev/nbd0 ubuntu-core-alpha-02_amd64-virt.img 

    此命令将创建名为/dev/ndb0的“虚拟磁盘”,其中“虚拟分区”名为/dev/ndb0pX 。 使用fdisk -l /dev/nbd0可以了解QCOW2映像中的分区。

  3. 您感兴趣的分区是/dev/ndb0p3 ,所以安装它:

     mount /dev/ndb0p3 /somewhere 
  4. 你差不多完成了! 只需关注自定义基本映像上的Docker指南 :

     tar -C /somewhere -c . | docker import - snappy 

现在,您已准备好在该基本图像上创建Snappy图像。 例如,我创建了一个安装了xkcd-webserver应用程序的snappy_test映像。 这是我使用的Dockerfile

 FROM snappy:latest RUN snappy install xkcd-webserver EXPOSE 80