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.
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.
Odpowiedzi:
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.
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.
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/nbd0
aby dowiedzieć się, jakie partycje znajdują się w obrazie QCOW2.
Interesująca Cię partycja /dev/ndb0p3
, więc zamontuj ją:
mount /dev/ndb0p3 /somewhere
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 Dockerfile
użyłem:
FROM snappy:latest
RUN snappy install xkcd-webserver
EXPOSE 80