Pierwsze kroki z Dockerem
Red Hat, wraz z pojawieniem się RHEL7, zaczął wspierać kontenery – czyli mechanizm izolacji aplikacji. Postawiono na bardzo popularną implementację – Docker.
Pytanie: Jak zarządzać setkami serwerów, które serwują tysiące kontenerów? Odpowiedź daje Project Atomic www.projectatomic.io
Projekt ten ma na celu szybkie wdrażanie aplikacji „kontenerowych” z uwzględnieniem łatwej aktualizacji lub wycofania wprowadzonych zmian. Atomic Host – główna część Project Atomic – to minimalny system operacyjny stworzony tylko w jednym celu – uruchamiania aplikacji w kontenerach.
W odpowiedzi na potrzeby rynku Red Hat wprowadził dedykowane szkolenie z tego produktu: RH270 – Managing Containers with Red Hat® Enterprise Linux® Atomic Host
Zanim zaczniemy administrować setkami kontenerów warto skupić się na jednym. Przyjrzyjmy się, jak w praktyczny sposób wykorzystać taki kontener.
Wykorzystamy w przykładach system z rodziny Red Hat – CentOS. Czy mogę uruchomić aplikację tak, aby aplikacja ta „nie widziała” innych procesów, aby miała swoją „własną” sieć i swój „własny” dysk? Czy mogę uruchomić na Fedorze aplikację z Ubuntu, Debiana? Tak właśnie działa kontener, a Docker upraszcza administracje. Wystarczy umieścić aplikację wraz z zależnościami (aplikacjami i bibliotekami) w takim kontenerze i gotowe. Izolacja aplikacji poprawia nam bezpieczeństwo, a jednocześnie kontener jest „lżejszym” rozwiązaniem niż wykorzystana w tym samym celu wirtualizacja.
Instalacja i uruchomienie Dockera:
# dnf install docker # systemctl enable docker.service # systemctl start docker.service
Nie trzeba tworzyć samodzielnie obrazów (dysków) kontenerów – łatwiej skorzystać z gotowych umieszczonych z ogólnodostępnym repozytorium (registry).
Pobierzmy obraz CentOS:
# docker search centos # docker pull docker.io/centos # docker images
Teraz uruchamiamy kontener interaktywnie:
# docker run -it docker.io/centos:latest [root@d9c074502983 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 13:48 ? 00:00:00 /bin/bash root 15 1 0 13:48 ? 00:00:00 ps -ef [root@d9c074502983 /]# echo TEST > plik.txt [root@d9c074502983 /]# exit exit # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d9c074502983 docker.io/centos:latest "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago gigantic_pare
Na podstawie jednego obrazu (#docker images) możemy wygenerować wiele kontenerów, ale usunięcie (#docker rm) kontenera powoduje utratę wszystkich danych. Zachowajmy więc nasz kontener:
# docker commit gigantic_pare docker.io/centos:v001 3319187f9572f43e8d2858afd893848247425b6b7d064a48e6f2c3570257d5be [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos v001 3319187f9572 10 seconds ago 196.6 MB docker.io/centos latest c8a648134623 3 days ago 196.6 MB
Gdy chcemy usunąć nasz kontener:
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d9c074502983 docker.io/centos:latest "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago gigantic_pare # docker rm gigantic_pare d9c0745029830241bd0323ae51234f77cc2822893de0623ed484283577a2f93a gigantic_pare
Teraz możemy uruchomić kontener z nowego obrazu:
# docker run -it docker.io/centos:v001 [root@ef8673a996e3 /]# cat plik.txt TEST [root@ef8673a996e3 /]# exit exit
Zatem możemy pobierać obrazy i je modyfikować. Repozytorium (registry) możemy zainstalować u siebie, gdzie możemy umieszczać nasze własne obrazy. W ten sposób mamy możliwość w łatwy sposób np: testować nowe aplikacje.