Czy mogę uruchomić Snappy Ubuntu Core jako gość w Docker?

10

Wiem, że Snappy Ubuntu może obsługiwać kontenery Docker. Moje pytanie brzmi, czy można go również uruchomić w kontenerze jako gość Dockera.

Pytam dlatego, że nie mogę znaleźć żadnych kontenerów gości Snappy VM w publicznym repozytorium Docker.

Todd Booth
źródło

Odpowiedzi:

10

Tak, możesz: Snappy to po prostu uproszczona wersja Ubuntu, a Ubuntu działa w Dockerze. Fakt, że Snappy nie pojawia się w publicznym repozytorium Dockera oznacza, że ​​musisz robić rzeczy ręcznie.

  1. Najpierw uzyskaj najnowszy obraz:

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

    Ten plik jest obrazem QCOW2 przeznaczonym dla QEMU / KVM, ale możemy również wyodrębnić jego zawartość dla Dockera.

  2. Aby uzyskać dostęp do plików w obrazie QCOW2, potrzebujesz qemu-nbd, więc zainstaluj go i uruchom:

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

    To polecenie utworzy „wirtualny dysk” o nazwie /dev/ndb0, z nazwanymi „wirtualnymi partycjami” /dev/ndb0pX. Użyj, fdisk -l /dev/nbd0aby dowiedzieć się, jakie partycje znajdują się w obrazie QCOW2.

  3. Interesująca Cię partycja /dev/ndb0p3, więc zamontuj ją:

    mount /dev/ndb0p3 /somewhere
    
  4. Jesteś prawie gotowy! Postępuj zgodnie z instrukcjami Dockera dotyczącymi niestandardowych obrazów podstawowych :

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

Teraz jesteś gotowy, aby stworzyć swoje Snappy obrazy na tym podstawowym obrazie. Na przykład utworzyłem obraz snappy_test z zainstalowaną aplikacją xkcd-webserver . Oto Dockerfileużyłem:

FROM snappy:latest
RUN snappy install xkcd-webserver
EXPOSE 80
Andrea Corbellini
źródło
2
Czy nie ma publicznego obrazu Dockera dla Snappy'ego?
Robin Winslow
Czy możesz ponownie przeczytać swoją odpowiedź? Wygląda na to, że twoje rozwiązanie nie działa już z obecnym obrazem Ubuntu-core: cdimage.ubuntu.com/ubuntu-core/16/stable/current/…
Chris
1
@ Karl2011 Spróbuję zajrzeć do niego, jak tylko będę miał trochę wolnego czasu :)
Andrea Corbellini,