web-dev-qa-db-ja.com

Docker内でゲストとしてSnappy Ubuntu Coreを実行できますか?

Snappy UbuntuはDockerコンテナをホストできることを知っています。私の質問は、Dockerゲストとしてコンテナー内でも実行できるかどうかです。

私が尋ねている理由は、パブリックDockerリポジトリにSnappy VMゲストコンテナーが見つからないためです。

10
Todd Booth

はい、できます: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画像を作成する準備ができました。たとえば、snappy_testイメージをxkcd-webserverアプリで作成しましたインストール済み。使用したDockerfileは次のとおりです。

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