Temat: Docker


Temat: Docker
Data: 2015-02-13
Treść:
Nie do końca jestem przekonany czy docker dla developerów pracujących na windows (mam na myśli środowisko deweloperskie nie produkcyjne) to dobre rozwiązanie (chodzi przecież o natywne komendy linuxa na linuxie). Postanowiłem jednak spróbować, oto wykonane przeze mnie kroki: 1. Zainstalowałem docker dla windows (wersja instalacyjna ze strony dockera). W trakcie instalacji nie wybrane zostały msys-git i virtualbox, bo mam już je zainstalowane. Niestety na drugim komputerze nie powiodła się instalacja VirtualBox, prawdopodobnie jest to spowodowane 64 bitową wersją. 2. Startuje dockera:
Boot2Docker Start
Oczywiście polecenie należy wykonać z poziomu msys-git a nie windows. 3. W ten sposób wystartował mi zwykły czysty linux. 4.Aby zainstalować obraz ubuntu należy wykonać polecenie
docker pull ubuntu
W ten sposób zostanie pobrany zdalny obraz ubuntu i zainstalowany. Obrazy są dostępne na github, można ich szukać poleceniem
docker search szukana_nazwa
5. Obraz został pobrany więc startujemy ubuntu:
docker run -i -t ubuntu /bin/bash
6. Teraz już "normalnie" instaluje openjdk oraz tomee na moim obrazie.
7. Jeśli jednak wyjdę z mojego ubunut przez zwykłe exit, wszelkie wprowadzone przeze mnie zmiany zostana stracone. Aby były one zachowane należy dokonać instalacji pakietów z poziomu dockera. Czyli w przypadku instalacji curl wykonać:
docker run -i -t ubuntu apt-get install curl
Następnie sprawdzam container_id poleceniem
docker ps -l 
oraz zapisuje zmiany do kontenera
docker commit container_id nazwa
Oczywiście można również komitować zmiany w kontenerze w ten sposób iż pracujemy na dwóch konsolach, gdzie na pierwszej mamy uruchomiony serwer, na drugiej po prostu dockera. Wszelkich zmian dokonujemy na pierwszej konsoli, gdzie pracuje już serwer, natomiast na drugiej komitujemy zmiany kontenera.
8. Dalej już mozolnie pobieram tomee za pomocą wget, rozpakowuje uruchamiam itp. Należy pamietać, że po każdej wykonanej z poziomu dockera zmianie w kontenerze należy wykonać commit, analogicznie jak w punkcie 7.
9. Aby uzyskać dostęp do serwera przez net należy wystartować go poleceniem:
docker run -i -t -p 8080:8080 ubuntu_sw /bin/bash
gdzie parametr:
- i, oznacza tryb interaktywny
- p, wskazuje mapowanie portów kontenera na system
Informację pod jakim ip dostępny jest kontener na windows można uzyskać poleceniem:
boot2docker ip

Oto uwagi związane z pracą na dockerze:
- przy pracy z jbossas należy pamietać aby włączyć na nim dostęp zdalny (co jest opisane w oddzielnym faqu). Komenda uruchomienia dockera z jbossas może wyglądać tak:
 docker run -i -t -p 8080:8080 -p 9999:9999 -p 4447:4447 -p 9990:9990 ubuntu_jbossas /bin/bash
- pracując z dockerem mamy podłączenia do kontenera zasobów dyskowych windowsa, na którym uruchomiony jest boot2docker. Domyślne program startując widzi nasz katalog domowy, czyli np c:/User/Alien. Załóżmy, że w tym katalogu utworzymy katalog jboss_deployment. Aby był od dostępny w kontenerze pod zasobem /user należy wystartować kontener z komendą:
docker run -i -t -p 8080:8080 -v /c/Users/Alien/jboss_deployment:/user ubuntu_jboss_mysql
Odpowiedzialną za podmontowanie zasobu dyskowego windowsa do kontenera jest oczywiście opcja -v.
- kiedy wszystko się już popsuje można "sformatować" dockera poleceniem:
docker system prune
A jeśli coś przeżyje to jeszcze:):
docker system prune -a
Można też uruchomić shell działającego już dockera:
exec -it id_kontenera  /bin/bash
<< Powrót <<

powered by sw