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

Tod*_*oth 10 virtualization ubuntu-core docker

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

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

And*_*ini 10

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

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

    wget http://cdimage.ubuntu.com/ubuntu-core/preview/ubuntu-core-alpha-02_amd64-virt.img
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    qemu-nbd -c /dev/nbd0 ubuntu-core-alpha-02_amd64-virt.img
    
    Run Code Online (Sandbox Code Playgroud)

    此命令将创建一个名为 的“虚拟磁盘” /dev/ndb0,“虚拟分区”名为/dev/ndb0pX。用fdisk -l /dev/nbd0得到的东西分区的QCOW2图像内的主意。

  3. 你感兴趣的分区是/dev/ndb0p3,所以挂载它:

    mount /dev/ndb0p3 /somewhere
    
    Run Code Online (Sandbox Code Playgroud)
  4. 你快完成了!只需遵循Docker 的自定义基础镜像指南

    tar -C /somewhere -c . | docker import - snappy
    
    Run Code Online (Sandbox Code Playgroud)

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

FROM snappy:latest
RUN snappy install xkcd-webserver
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)

  • 没有 Snappy 的公共 Docker 镜像吗? (2认同)