Wstęp do Dockera [notatki ver. 2]

Kiedyś – instalacja aplikacji na serwerze
Później – instalacja aplikacja na maszynie wirtualnej
Obecnie – instalacja aplikacji w kontenerze
Minimalizm! A przy tym wszelkie zależności, które są potrzebne do prawidłowego działania aplikacji

VM = system operacyjny + aplikacja + zależności wymagane przez apke
kontener = aplikacja + zależności wymagane przez apke
^ różnice widać gołym okiem

Kontenery korzystają z jądra i innych usług od systemu goszczącego je (współdzielą). Jednakże nie współdzielą plików – każdy kontener to prywatna przestrzeń nazw.

Obraz kontenera = szablon (system+coś zainstalowane już), ujednolicony system plików, system bazowy

Silnik kontenerów = docker

docker (other) = podman (RHEL)

## Instalacja

(jeżeli już coś było robione to najpierw sprzątamy usuwając pakiety:
docker docker-engine docker.io containerd runc)

pakiety: docker.io

## Obrazy ##

* pobieranie
docker pull nazwa_obrazu:tag (w tłumaczeniu: docker pobierz obraz)
np.: docker pull alpine:latest

! alpine = lekki obraz, do prostych kontenerów

* wyświetlenie obrazów w systemie
docker images – wyświetla pobrane obrazy

* wyszukiwanie obrazów w repo
docker search (-f options) nazwa_obrazu (w tłumaczeniu docker wyszukaj obraz) <- repo: docker hub

? options:
is-official=true (tylko oficjalne)
stars=30 (określona ilość gwiazdek, więcej niż 30)

np.: docker search centos

* usunięcie obrazu
docker rmi nazwa_obrazu

## Kontenery ##

* utworzenie, bez uruchomienia
docker container create nazwa_kontenera

* uruchomienie
docker container run -it image /bin/bash
-it <- zalogowanie do kontenera (wymagane, inaczej nie utworzy tty)
-d (utworzy jako daemon)
-v nazwa_volumenu:/gdzie_go_zamontować_w_kontenerze
–name nazwa_kontenera
-e MYSQL_ROOT_PASSWORD=haslo_roota_mysql (zmienne środowiskowe)
-e MYSQL_DATABASE=nazwa_bazy
-e MYSQL_USER=nazwa_usera
-e MYSQL_PASSWORD=haslo_do_bazy
–net nazwa_sieci

? najpierw sprawdza czy jest obraz, jeżeli jest tworzy od razu kontener, jeżeli nie to najpierw pobiera obraz

! uruchomienie kontenera z bazą danych mysql
docker run –name nazwa_kontenera –net nazwa_sieci -e MYSQL_ROOT_PASSWORD=haslo_roota -e MYSQL_DATABASE=nazwa_bazy -e MYSQL_USER=nazwa_usera -e MYSQL_PASSWORD=haslo_usera -d mysql

* wyświetlenie listy kontenerów:
docker container ls -a
-a = wyświetla wszystkie, nawet te wyłączone

* zmiana nazwy kontenera
docker container rename stara_nazwa nowa_nazwa

* kasowanie kontenera
docker container rm nazwa_kontenera
-f = kasowanie działających kontenerów

* kasowanie wszystkich wyłączonych
docker container prune

* podłączenie się do CLI kontenera
docker attach nazwa_kontenera
! po wyjściu z cli ubije kontener

* podłączenie się do CLI kontenera – wyjście nie ubija kontenera
docker exec -it nazwa_kontenera /bin/bash

* wywołanie w kontenerze komendy systemowej bez konieczności podłączania się do cli
docker exec -it nazwa_kontenera komenda_do_wykonania

## Volumeny ##

volumen = magazyn do przechowywania danych
dane w kontenerze dostępne tylko do momentu, aż zostanie zatrzymany

* tworzenie volumena
docker volume create nazwa_volumenu

* wyświetlenie volumenów w systemie
docker volume ls

* inspekcja volumenu (wyświetlenie info o volumenie, w tym ścieżka lokalna)
docker volume inspect nazwa_volumenu

* kasowanie volumenu
docker volume rm nazwa_volumenu

* kasowanie wszystkich volumenów, które nie są przypisane do kontenera
docker volume prune

## Sieci ##

– docker automatycznie dodaje nowe kontenery do domyślnej sieci
– tworzy swoją sieć podczas instalacji
– możemy przypisać kilka do oddzielnej sieci

* utworzenie nowej sieci
docker network create nazwa_sieci

* wyświetlenie listy sieci
docker network ls

* dodanie kontenera do sieci
docker network connect nazwa_sieci nazwa_kontenera

* wyświetlenie szczegółów sieci
docker network inspect nazwa_sieci

* kasowanie sieci
docker network rm nazwa_sieci

## Debugowanie ##
* wyświetlanie konfiguracji kontenera (jak był uruchomiony, jakie ma IP,…)
docker inspect nazwa_kontenera

* wyświetlenie logów kontenera (to co wyrzuca na ekran)
docker logs nazwa_kontenera

* podpięcie się strace do kontenera
na głównej maszynie musimy znaleźć PID procesu kontenera i podpinamy się standardowo właśnie pod ten proces

* zrzucenie kontenera do pliku (backup)
docker export nazwa_kontenera > plik.tar
docker export nazwa_kontenera | gzip > plik.tar.gz

gzip – zmniejszenie rozmiaru

sprawdzenie zawartości: tar -tf plik.tar (-test -file)

W celu świadczenia usług na najwyższym poziomie stosujemy pliki cookies, które będą zamieszczane w Państwa urządzeniu (komputerze, laptopie, smartfonie). W każdym momencie mogą Państwo dokonać zmiany ustawień Państwa przeglądarki internetowej i wyłączyć opcję zapisu plików cookies. View more
Zaakceptuj