Ferex Blog

czyli coś o niczym

Linux nie taki trudny! - Docker

Napisano przez Ferex dnia 01-09-2019

Linux wcale nie musi być tak trudnym systemem na jaki wygląda. Ostatnio specjalnie zakupiłem serwer vps za 5zł w firmie Zdalny Admin by pokazać Wam, że Linux wcale nie musi być taki trudny - a skoro serwer vps jest taki tani to czemu by nie zrobić na nim kilku testów?

Na sam początek może zacznijmy od dockera, którym stworzymy sobie jakieś usługi na serwerze vps. Docker jest narzędziem które tworzy wirtualne środowisko w którym uruchamiane są różne usługi, aplikacje i dzięki czemu dla przykładu chcemy zainstalować sobie kilkanaście rzeczy bo tak nam się podoba, ale no cóż, po odinstalowaniu któregoś czasami zostają niepotrzebne nam aplikacje w systemie. Docker jest o tyle fajny, że po utworzeniu usługi, aplikacji, możemy to szybko usunąć przez co system nie będzie tak bardzo zaśmiecony jak byśmy to zrobili za pomocą menadżera pakietów, gdyż nie usuwamy pakietu ale cały obraz!

Docker jest też fajnym narzędziem jeżeli ktoś chciałby uruchomić kilka instancji TeamSpeak3 lub MySQL Server, gdyż TeamSpeak3 oraz MySQL sprawdzają czy instancja już działa i jeśli tak to nie uruchomią drugiej, zaś docker izoluje środowiska od siebie więc nie mają jak tego sprawdzić

Zacznijmy może jednak od jego zainstalowania
Polecenia te działają w 100% w systemie Ubuntu 18.04 który daje domyślnie Zdalny Admin

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Okej, mamy dockera, to może teraz jakiś przykład? Spróbujmy uruchomić dla przykładu takie polecenia:

mkdir -p /opt/ts3/1 /opt/ts3/2
chown -R o+w /opt/ts3
docker run -d -v /opt/ts3/1:/data -e TS3SERVER_LICENSE=accept -p 9987:9987/udp -p 10011:10011 -p 30033:30033 --name=ts31-server aheil/teamspeak3-server
docker run -d -v /opt/ts3/2:/data -e TS3SERVER_LICENSE=accept -p 9988:9987/udp -p 10012:10011 -p 30034:30033 --name=ts32-server aheil/teamspeak3-server

oraz przykład dla MySQL:

docker run -d \
--name mysql1 \
-p 127.0.0.1:3306:3306 \
-e MYSQL_ROOT_PASSWORD=password \
-t cytopia/mysql-5.5

docker run -d \
--name mysql2 \
-p 127.0.0.1:3307:3306 \
-e MYSQL_ROOT_PASSWORD=password \
-t cytopia/mysql-5.5

Teraz każdy kto będzie chciał będzie mógł bardzo prosto uruchomić swój własny serwer używając wyłącznie dockera Jak? Przykład poniżej:

mkdir /opt/data
chown -R o+w /opt/data
docker run \
--net=host \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/data/mailserver:/data \
--name "mailserver" \
-h "mail.example.com" \
-t analogic/poste.io

docker run --name stronka -p 8080:80 -d wordpress

docker run -d \
-v nextcloud:/var/www/html \
-v apps:/var/www/html/custom_apps \
-v config:/var/www/html/config \
-v data:/var/www/html/data \
-p 8008:80 \
nextcloud

No więc tak, uruchomiliśmy sobie serwer poczty, webmail, panel admina tego serwera, następnie stronkę na wordpressie, oraz nextclouda na którego możemy wrzucać pliki. Czy to takie trudne?

No to teraz uwaga! Niespecjalnie umieściłem link do oferty firmy Zdalny Admin bo równie dobrze mógłbym użyć innej firmy która daje vps na rok za 3$ aleee....!
1. Zdalny Admin daje serwery vps z pełną wirtualizacją KVM, a nie OpenVZ.
2. Wirtualizacja KVM daje o wiele więcej niż jakakolwiek inna (pomijając Virtualbox/VMWare - bo na jedno wyjdzie).
3. Możemy robić dodatkowe partycje i partycjonować dysk po swojemu!

Wyżej macie podany np. -v nextcloud:/var/www/html i możemy np. utworzyć nasz własny obraz IMG do którego będą wrzucane nasze aplikacje, programy, skrypty, itd. itd. który możemy później wrzucić na jakąś chmurę by nam to nie przepadło
Jeżeli ktoś się zastanawia dlaczego to już mówię: właśnie po to że jeżeli sobie coś skonfigurujemy od początku do końca i chcemy potem tą konfigurację przywrócić to pobieramy obraz IMG który zrobiliśmy, podmontowujemy go i robimy kopiuj/wklej całej konfiguracji - proste? proste!

Jak to zrobić? Przykład dla obrazu o pojemności 2GB:

mkdir /mnt/obraz
dd if=/dev/zero of=/opt/obraz.img bs=1M count=2048
mkfs.ext4 /opt/obraz.img
mount /opt/obraz.img /mnt/obraz
mkdir /mnt/obraz/jakisobraz chmod -R o+w /mnt/obraz

Teraz wystarczy w konfiguracji wpisać:

-v /mnt/obraz/jakisobraz:/data

Gotowe!
Napisałem Wam o tym tworzeniu obrazów IMG dlatego, że w ten sposób dla przykładu możecie zrobić to samo co ja robię, czyli macie jakiś obraz IMG, podpinacie pod obrazy które konfigurujecie, następnie kopiujecie wszystko na swój obraz, tworzycie skrypt który to w razie reinstalacji kopiuje w odpowiednie miejsca i nadaje uprawnienia, a później ten obraz w bezpieczne miejsce
Co Wam to da? W razie gdyby serwer Wasz padł i musiałby pójść reinstall to wtedy stawiacie ponownie obrazy dockera (wpinacie przy okazji ten swój zrobiony) i później kopiuj/wklej wszystko i restart Serwer przywrócony do życia w 5-10 minut?
Oczywiście możecie ten sam patent zrobić na serwerze vps bez dockera, czyli po prostu utworzyć obraz IMG, zrobić katalog np. /data i podmontować do data, skopiować dane, stworzyć skrypt gdzie co ma przekopiować i w bezpieczne miejsce albo na chmurę


Jak pięknie jest mieć Arch Linuxa i Ubuntu jednocześnie

Na sam koniec chyba należy podsumować to wszystko i stwierdzić, że odkąd pojawił się docker to technologia idzie do przodu i są o wiele większe możliwości, lecz no, wszystko ma swoje plusy i minusy które postaram się przedstawić w następnej notce dotyczącej dockera

~~~~ Komentarze ~~~~