Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:sitw:2015:lab6:start [2015/11/30 10:22] kkr [Docker] |
pl:dydaktyka:sitw:2015:lab6:start [2019/06/27 15:50] (aktualna) |
Docker jest aplikacją pracującą na podbudowie w postaci LXC, która zarządza obrazami oraz asystuje we wdrożeniach wirtualizacji aplikacji. Dostarcza automatyzacji oraz mechanizmów szybkiego tworzenia kontenerów LXC. Dodatkowo udostępnia API, które rozszerza funkcjonalność LXC o możliwość budowania oferty PaaS (Platform as a Service). Docker pierwotnie nazywał się dotCloud, a jego kariera trwa od roku. Aktualnie jest zintegrowany z szeregiem innych narzędzi m.in. Ansible, Chef, OpenStack, Pupper, Salt. Jest też dołączony do RHEL, OpenShift PaaS, Google Compute Engine, Deis, a także Amazon Web Services Elastic Beanstalk. Docker jest aktualnie standardem wirtualizacji aplikacji dla systemu Linux. | Docker jest aplikacją pracującą na podbudowie w postaci LXC, która zarządza obrazami oraz asystuje we wdrożeniach wirtualizacji aplikacji. Dostarcza automatyzacji oraz mechanizmów szybkiego tworzenia kontenerów LXC. Dodatkowo udostępnia API, które rozszerza funkcjonalność LXC o możliwość budowania oferty PaaS (Platform as a Service). Docker pierwotnie nazywał się dotCloud, a jego kariera trwa od roku. Aktualnie jest zintegrowany z szeregiem innych narzędzi m.in. Ansible, Chef, OpenStack, Pupper, Salt. Jest też dołączony do RHEL, OpenShift PaaS, Google Compute Engine, Deis, a także Amazon Web Services Elastic Beanstalk. Docker jest aktualnie standardem wirtualizacji aplikacji dla systemu Linux. |
| |
| <WRAP center round important 60%> |
| Z racji na czasochłonne tworzenie kontenera LXC (ok. 55 minut), proszę przed rozpoczęciem wykonywania ćwiczeń wykonać instrukcje zawarte w punktach: |
| * 5.2. |
| * 5.3. |
| * 5.4. |
| * 6.1.II |
| W trakcie tworzenia kontenera (ostatni podpunkt) można przejść do wykonywania instrukcji od początku. |
| </WRAP> |
| <WRAP center round important 60%> |
| W przypadku dotarcia do momentu tworzenia kontenera LXC, kontener nie będzie jeszcze gotowy, proszę rozpocząć ćwiczenie dotyczące [[#docker1|Docker-a]]. |
| </WRAP> |
===== Control Groups ===== | ===== Control Groups ===== |
==== - Montowanie Control Groups ==== | ==== - Montowanie Control Groups ==== |
- Używając programu ''ps'' odnajdujemy PID uruchomionego procesu programu ''cat''. | - Używając programu ''ps'' odnajdujemy PID uruchomionego procesu programu ''cat''. |
- Sprawdzamy w jakiej grupie jest uruchomiony powyższy proces:<code bash>cat /proc/PID/cgroup</code> | - Sprawdzamy w jakiej grupie jest uruchomiony powyższy proces:<code bash>cat /proc/PID/cgroup</code> |
- W folderach, które odpowiadają odpowiednim kontrolerom znajduje się plik ''tasks''. Używając tego pliku sprawdź czy PID powyższego procesu znajduje się w kontrolerach ''cpu'' oraz ''blkio'' należących do grupy, w której pracuje proces np.:<code bash>cat CGROUP/cpu/tasks | grep PID</code> | - W folderach, które odpowiadają odpowiednim kontrolerom znajduje się plik ''tasks''. Używając tego pliku sprawdź czy PID powyższego procesu znajduje się w kontrolerach ''cpu'' oraz ''blkio'' należących do grupy, w której pracuje proces np.:<code bash>cat /sys/fs/cgroup/cpu/CGROUP/tasks | grep PID</code> |
- Przenieś uruchomiony proces do wcześniej stworzonej grupy ''cpulimited''. Przeniesienie procesu jest możliwe na dwa sposoby (spróbuj wykonać ćwiczenie używając każdego z nich): | - Przenieś uruchomiony proces do wcześniej stworzonej grupy ''cpulimited''. Przeniesienie procesu jest możliwe na dwa sposoby (spróbuj wykonać ćwiczenie używając każdego z nich): |
- Użycie polecenia ''cgclassify'' (przeczytaj manual):<code bash>cgclassify -g cpu:/cpulimited PID</code> | - Użycie polecenia ''cgclassify'' (przeczytaj manual):<code bash>cgclassify -g cpu:/cpulimited PID</code> |
5:freezer:/ | 5:freezer:/ |
4:devices:/user.slice | 4:devices:/user.slice |
3:cpu,cpuacct:/cpulimited | 3:cpu,cpuacct:/ |
2:cpuset:/ | 2:cpuset:/ |
1:name=systemd:/user.slice/user-1000.slice/session-1.scope</code>Przykład po:<code bash># cat /proc/32194/cgroup | 1:name=systemd:/user.slice/user-1000.slice/session-1.scope</code>Przykład po:<code bash># cat /proc/32194/cgroup |
5:freezer:/ | 5:freezer:/ |
4:devices:/user.slice | 4:devices:/user.slice |
3:cpu,cpuacct:/ | 3:cpu,cpuacct:/cpulimited |
2:cpuset:/ | 2:cpuset:/ |
1:name=systemd:/user.slice/user-1000.slice/session-1.scope</code> | 1:name=systemd:/user.slice/user-1000.slice/session-1.scope</code> |
- Aktualizujemy listę pakietów:<code bash>apt-get update</code> | - Aktualizujemy listę pakietów:<code bash>apt-get update</code> |
- Instalujemy pakiety LXC:<code bash>apt-get install lxc</code> | - Instalujemy pakiety LXC:<code bash>apt-get install lxc</code> |
- Dodatkowo można zainstalować (w celu ułatwienia pracy):<code bash>install bridge-utils libvirt-bin debootstrap</code> | - Dodatkowo można zainstalować (w celu ułatwienia pracy):<code bash>apt-get install bridge-utils libvirt-bin debootstrap</code> |
- Sprawdzamy konfigurację:<code bash>lxc-checkconfig</code> | - Sprawdzamy konfigurację:<code bash>lxc-checkconfig</code> |
- Sprawdzamy zainstalowane/dostępne narzędzia:<code bash>lxc-<tab><tab></code> | - Sprawdzamy zainstalowane/dostępne narzędzia:<code bash>lxc-<tab><tab></code> |
- Skonfiguruj ponownie swoje interfejsy w systemie gospodarza - doprowadź sieć do działania. | - Skonfiguruj ponownie swoje interfejsy w systemie gospodarza - doprowadź sieć do działania. |
- Zmień konfigurację sieci twojego kontenera: | - Zmień konfigurację sieci twojego kontenera: |
- Zmień ustawienie parametru ''lxc.network.type'' na ''none''. | - Zmień ustawienie parametru ''lxc.network.type'' na ''veth''. |
- Poniżej dodaj dwa kolejne wpisy: | - Poniżej dodaj dwa kolejne wpisy: |
- Automatyczne aktywowanie interfejsów sieciowych podczas startu maszyny: ''lxc.network.flags = up'' | - Automatyczne aktywowanie interfejsów sieciowych podczas startu maszyny: ''lxc.network.flags = up'' |