Domyślne sterowniki: bridge, host, null, overlay Czytaj dalej Docker – Network
Autor: jornathan
Docker – kontenery
Działająca instancja obrazu nazywana jest kontenerem. Obraz tylko do odczytu otrzymuje na samej górze warstwę do odczytu-zapisu, inicjuje porty sieciowe, limity, identyfikator i inne ustawienia potrzebne do działania.
Czytaj dalej Docker – kontenery
Docker – obrazy, warstwy
Dokumentacja online: https://docs.docker.com/
Node – process: stdin, stdout
Dockerfile – budowanie obrazu
Składnia – gdy jest już gotowy Dockerfile
# docker build [OPCJE] <ŚCIEŻKA lub ADRES URL> | - - ścieżka lub URL - określa kontekst, położenie plików - COPY, ADD, ... szukają plików w kontekście budowania - ścieżka określa wszystkie podkatalogi, - . (kropka) bieżący katalog z plikiem Dockerfile - URL - repozytorium git z wszystkimi podmodułami - cały kontekst jest wysyłany do demona budowania # docker build -help
Dockerfile – STOPSIGNAL, HEALTHCHECK, SHELL
STOPSIGNAL – określa jaki sygnał wywołania systemowego powinien zostać wysłany do kontenera w celu zakończenia go Czytaj dalej Dockerfile – STOPSIGNAL, HEALTHCHECK, SHELL
Dockerfile – ARG, ONBUILD
ARG – przekazuje Dockerowi argument – do polecenia docker build
Dockerfile – VOLUME, WORKDIR
VOLUME – tworzy punkt podłączenia danych kontenera. Wolumen to stronie kontenera podajemy jawnie, wolumen po stronie hosta może być podany jawnie lub będzie mapowany automatycznie na katalog w strukturze katalogów dockera Czytaj dalej Dockerfile – VOLUME, WORKDIR
Uprawnienia do plików
Uprawnienia – rekurencyjnie
# chmod -R 755 /var/www/html # chmod -R u=rwx,go=rx /var/www/html
# find /var/www/html -type d -exec chmod 755 {} \; # find /var/www/html -type f -exec chmod 644 {} \;
Dockerfile – EXPOSE, RUN, USER
Informuje że kontener nasłuchuje na określonych portach sieciowych – docker zezwala na przychodzący ruch sieciowy do kontenera z innych kontenerów tego hosta. Nie udostępnia automatycznie hostowi portów kontenera.
EXPOSE 80 EXPOSE 443 docker run --expose 80 ... docker run --expose 443 ...
Dockerfile – LABEL, ENV
LABEL – dodaje informacje opisowe (metadane) do obrazu. Etykiety są addytywne. Te same klucze nadpisują wartości. Czytaj dalej Dockerfile – LABEL, ENV
Dockerfile – CMD, ENTRYPOINT
W Dockerfile powinna znaleźć się instrukcja ENTRYPOINT i/lub CMD. Najczęstszy scenariusz:
-
-
- ENTRYPOINT […] – definiuje aplikację domyślną używaną przy tworzeniu kontenera – ustawienie podstawowego polecenia obrazu uruchomionego automatycznie.
- CMD […] – (bez polecenia) – dostarcza argumenty domyślne do ENTRYPOINT
- docker run ….. paramX paramY – nadpisuje parametry CMD
-
CMD – Polecenie i parametry startowe kontenera, lub parametry do ENTRYPOINT
Czytaj dalej Dockerfile – CMD, ENTRYPOINT
Dockerfile – FROM, ADD, COPY
Dockerfile – plik tekstowy, bez rozszerzenia w katalogu głównym projektu. Dodajemy do repozytorium git. Buduje nowy obraz w oparciu o obraz bazowy.
- # to jest komentarz - instrukcje piszemy WIELKIMI LITERAMI (mimo iż Docker nie rozróżnia wielkości liter) - każda instrukcja tworzy nową warstwę - należy scalać wiele instrukcji w jedną (o ile to możliwe) - ważna jest kolejność - w tej kolejności będą tworzone warstwy - ostatnie instrukcje to CMD, ENTRYPOINT
Docker – wolumeny
Mapowanie wolumenu hosta na kontener – dostęp z poziomu kontenera i hosta
# docker run -v /host_dir/:kontener_dir # docker run -it -v /home/john/wwwdir/:/data ubuntu # docker volume ls - sprawdzenie nazwy
Docker – porty, połączenie kontenerów
Udostępnienie portów
EXPOSE (Dockerfile) - udostępnione porty są otwarte dla innych kontenerów --expose - tryb wykonawczy docker run - możliwy zakres portów. Nie mapuje portów hosta. # docker run --expose=1000-200 ... -p - jawne mapowanie portów z hostem (tryb wykonawczy) np. # docker run -p 7000-8000:7000-8000 ... # docker run --name nginx -d -p 8080:80 nginx # docker run --name nginx -d -p 8080:80 -p 443:443 nginx -P - mapowanie dynamiczne - proty hosta wybrane losowo dla każdego portu w EXPOSE lub --expose # docker run --name nginx -d -P nginx
Docker – network
WordPress – wyłączenie wszystkich pluginów
- Połączyć się z bazą danych
- tabela: wp_options
- kolumna: active_plugins
- zawartość: a:0:{}
Komendy dockera
Uruchomienie kontenera w trybie interaktywnym – katalog projektu pusty Czytaj dalej Komendy dockera
Docker – instalacja linux
# apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
# curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
CPU
Docker – after installation Windows
Przykładowe ściągnięcie obrazu getting-started, uruchomienie konternera i wrzucenie obrazu do docker huba:
# docker run --name repo alpine/git clone https://github.com/docker/getting-started.git # docker cp repo:/git/getting-started . # cd getting-started # docker run -d -p 80:80 --name docker-tutorial docker101tutorial # docker tag docker101tutorial jornathanx/docker101tutorial # docker push jornathanx/docker101tutorial
Redis – cmd
# redis-cli
# redis-cli FLUSHALL - czyści bazę redis
> EXIT - wyjście z programu
> help $string - lub: @hash, @list, @set
Redis – Sorted_set
> help $sorted_set
Redis – Set (zbiór)
Zbiór zapewnia stały czas przetwarzania elementów. Czytaj dalej Redis – Set (zbiór)
Redis – LISTY – tablice ciągów znaków (JS)
127.0.0.1:6379> help @list
Redis – Hash – tablice asocjacyjne – obiekty płaskie (JS)
HSET, HGET, HGETALL, HEXISTS, HDEL
> HSET profil.1 name Frank - kropka traktowana jest jak każdy inny znak > HSET profil.1 login johnny
Czytaj dalej Redis – Hash – tablice asocjacyjne – obiekty płaskie (JS)
Redis – String
# redis-cli
> KEYS * - wszystkie klucze (musi być argument) > EXIT - wyjście z programu
Redis – konfiguracja
Główny plik konfiguracyjny
# nano /etc/redis/redis.conf bind 127.0.0.1 - tylko localhost # By default, if no "bind" configuration directive is specified, Redis listens # for connections from all the network interfaces available on the server. # It is possible to listen to just one or multiple selected interfaces using # the "bind" configuration directive, followed by one or more IP addresses.
Redis – instalacja
# apt install redis-server
Debian – apt update error
Podczas aktualizacji pojawia się błąd:
Błąd:4 https://packages.sury.org/php stretch InRelease Następujące podpisy były błędne: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key <deb@sury.org>