O tym jak zainstalować i skonfigurować vSphere Integrated Containers pisałem niedawno tutaj (lektura obowiązkowa). Dzisiaj stworzymy własny, bazowy obraz kontenera (z systemem CentOS 7) z dowolną aplikacją, załadujemy go do rejestru (lokalne repozytorium obrazów) na Harbor. Dodatkowo stworzymy stały wolumen który podłączymy do naszego nowego kontenera. Temat VIC jest dość nowy, stąd nie wiele w Internecie jest informacji na tematy z nim związane, artykuł ten powstał jako próba usystematyzowania wiedzy z nim związanej.
Czemu mamy stworzyć własny bazowy obraz systemu CentOS 7 skoro na Docker Hub jest dostępny od ręki? Wszystkie obrazy z huba są wyczyszczone do zera, nie znajdziemy tam tak prostych rzeczy jak edytor vim, mc, wget i innych a które czasem się przydają. Nie mówiąc już o yum za pomocą którego można zaktualizować np. apache. Oczywiście stawiając własne aplikacje będziemy posługiwać się własnymi obrazami, warto wiedzieć jak je tworzyć i zarządzać nimi w środowisku vSphere za pomocą Harbor i Admiral. Aby zrobić bazowy obraz, będziemy potrzebowali maszyny z systemem CentOS 7. Wykonujemy następujące polecenia:
export image=/image/rootfs
mkdir -p $image
initialize rpm database
rpm –root $image –initdb
yum reinstall –downloadonly –downloaddir . centos-release
rpm –root $image -ivh centos-release*.rpm
rpm –root $image –import $image/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum -y –installroot=$image –setopt=tsflags=’nodocs’ –setopt=override_install_langs=en_US.utf8 install yum
sed -i „/distroverpkg=centos-release/a override_install_langs=en_US.utf8\ntsflags=nodocs” $image/etc/yum.conf
cp /etc/resolv.conf $image/etc
chroot $image /bin/bash <<EOF
yum install -y procps-ng iputils vi mc bindutils wget curl
yum clean all
EOF
rm -f $image/etc/resolv.conf
Jeśli potrzebujemy proxy to ustawiamy je wewnątrz pliku $image/etc/yum.conf. W ten sposób mamy przygotowany wyjściowy obraz, na maszynie instalujemy dockera, uruchamiamy go i importujemy nasz obraz. Następnie uruchamiamy kontener i sprawdzamy czy wszystko działa.
Nasz kontener działa poprawnie (na razie lokalnie na maszynie gdzie został zrobiony), aby uruchomić go na VCH musimy go wcześniej załadować do Harbor. Na maszynie linuksowej tworzymy katalog z nazwą maszyny do którego wgrywamy plik ca.crt którym podpisany jest certyfikat wystawiony dla Harbor (patrz pierwszy artykuł o VIC). Następnie logujemy się do Harbor aby sprawdzić czy komunikacja jest poprawna.
Jeśli wszystko jest ok, możemy przegrać obraz z lokalnego repozytorium do Harbor (polecenie docker push). W zdalnym repozytorium jest stworzony domyślny projekt o nazwie library którego użyjemy.
Jeśli wszystko jest ok, to przepychamy (docker pull) obraz kontenera z Harbor do VCH (VMware Container Host) i sprawdzamy czy obraz jest poprawnie widoczny.
Zanim uruchomimy kontener to wygenerujemy stały (persistent) volumen i podłączymy go pod kontener.
Widok od strony VIC:
Mamy uruchomiony własny kontener z systemem CentOS 7 z podłączonym stałym wolumenem w katalog /etc, dzięki czemu efekty naszej pracy nie znikną po restarcie kontenera. Oczywiście cała przeprowadzona tutaj procedura to tylko przykład możliwości jakie niesie ze sobą vSphere Integrated Containers.