Spis treści

Docker - wprowadzenie

Ważne informacje

Nie wolno restartować maszyn

Tematy ćwiczeń napisane KURSYWĄ są zrealizowane i proszę ich nie realizować.

Terminologia

Klient dockera - polecenie docker używane do kontrolowania środowiska dockera oraz komunikacji ze zdalnymi serwerami dockera.
Serwer dockera - polecenie docker uruchomione w trybie daemona. Zamienia serwer linuksowy w serwer dokera na którym można uruchamiać, budować i wyłączać kontenery za pomocą zdalnego klienta.
Obrazy dockera - obrazy zawierające jedną lub więcej abstrakcyjnych warstw filesystemu oraz istotne metadane reprezentujące wszystkie pliki niezbędne do uruchomienia aplikacji w kontenerze. Pojedynczy obraz może być kopiowany na inne hosty. Obraz z reguły posiada nazwę i tag, tag jest używany głównie do identyfikacji wydania obrazu.
Kontener dockera - jest to linuksowy kontener zainicjowany z konkretnego obrazu. Konkretny kontener może istnieć tylko raz, jednak można łatwo stworzyć wiele kontenerów z tego samego obrazu.

Wymagania

Instalacja

Instalacja za pomocą mamangera pakietów:

apt-get install apt-transport-https ca-certificates curl iptables

następnie:

curl -sSL https://get.docker.com/ | sh

Włączanie usługi dockera wraz ze startem systemu:

systemctl enable docker

Aby nie musieć korzystać z sudo za każdym razem warto dodać się też do grupy docker

Dockerfile

Aby zbudować obraz niezbędny jest poprawny Dockerfile, który opisuje każdą z warstw abstrakcji oraz metadane, które znajdą się w wyjściowym obrazie.
Typowy Dockerfile dla aplikacji nodejs może wyglądać tak:

FROM node:0.10
MAINTAINER Jan Kowalski <jkowalski@fajnymail.com>
LABEL "ocena"="5 gwiazdek" "klasa"="pierwsza"
USER root
ENV AP /data/app
ENV SCPATH /etc/supervisor/conf.d
RUN apt -y update
RUN apt -y install supervisor
RUN mkdir -p /var/log/supervisor
ADD .supervisor/conf.d/* $SCPATH
ADD *.js* $AP/
WORKDIR $AP
RUN npm install
CMD ["supervisord", "-n"]

Każda z linii nakłada na obraz kolejną warstwę abstrakcji, dobrą praktyką jest zaczynać od najniższego poziomu jako od systemu, gdyż w przypadku zmian, np ścieżki w zmiennej AP, budowa nowego obrazu rozpocznie się od zmienionej linii, wszystkie wcześniejsze zostaną pominięte, co zaoszczędzi czasu przy budowaniu.
Poniżej wyjaśnię anatomię pliku Dockerfile na powyższym przykładzie.

Każda kolejna linia Dockerfile i każdy krok tworzy nową warstwę, która zależy od poprzedniej!

Budowanie obrazu

Obrazy dockera budujemy za pomocą polecenia uruchamianego w katalogu z Dockerfile:

docker build -t example/docker-node-hello:latest .

Przykład

Ćwiczenia do wykonania na localhost

apt update && apt upgrade

Obecnie

apt-get install apt-transport-https ca-certificates curl iptables

następnie:

curl -sSL https://get.docker.com/ | sh

Dawniej

apt install docker.io
--mtu=1454

do obecnych

OPTIONS

w pliku

/etc/default/docker
systemctl enable docker
systemctl start docker
docker run hello_world
ip address show dev docker0



Proszę odinstalować dockera na końcu laboratoriów

Treść laboratorium



Dockerfile proszę zakładać w katalogu domowym użytkownika student lub jego podkatalogach


Ćwiczenia proszę wykonywać dalej na localhost

Ćwiczenie 1

-ti 
-d
docker ps

Ćwiczenie 2

Ćwiczenie 3

Ćwiczenie 4

docker login
docker push

obraz (musi nazywać się jak użytkownik, czyli jeśli konto to jkowalski, to obraz powinien nazywać się: jkowalski/nazwa_obrazu:tag) - jeśli trzeba, przebuduj obraz do poprawnej nazwy

docker run -d nazwa_uzytkownika/nazwa_obrazu

Ćwiczenie 5

Ćwiczenie 6

Ćwiczenie 7

Ćwiczenie 8