我可以在Docker内部以访客身份运行Snappy Ubuntu Core吗?


10

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

我问的原因是,我在公共Docker存储库中找不到任何Snappy VM guest虚拟机容器。

Answers:


10

是的,您可以: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

2
Snappy没有公共Docker映像吗?
罗宾·温斯洛

能否请您重新回答一下?这似乎是您的解决方案已不与当前Ubuntu的核心形象的工作:cdimage.ubuntu.com/ubuntu-core/16/stable/current/...
chrisber

1
@ Karl2011,我会在有空的时候尽快尝试一下:)
Andrea Corbellini
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.