Category Archives: Docker
Tum Standalone Docker ve Swarm Cluster’i Portainer ile Yonetmek
Portainer sitesinde aciklandigi gibi cidden cok basit ve guzel bir GUI ile tum Docker Host ve Swarm Cluster’inizi bir noktadan yonetmenize yariyor .
Portainer’i Docker Datacenter’in bir parcasi olan Universal Control Plane (UCP) ile karistirmamak lazim , benzer bilgiler saglamalarina ragmen DDC Docker Swarm’in uzerine ek getirdigi DTR (Docker Trusted Registry) ve HTTP Rounting Mesh ile gelen HTTP ve HTTPS isteklerini icerideki docker service’lere iletmekle gorevli ek bir bilesenle geliyor.
Portainer’i dilerseniz elinizdeki windows,linux,macosx uzerine calisan standalone bir docker daemon uzerinde veya docker swarm mode calisan bir cluster uzerinde calistirabilirsiniz . Swarm mode durumunda Portainer mutlaka manager role’u kosan node uzerinde calisiyor olmali.
Ilk kurulumda uzerinde kosturdugumuz standalone docker daemon veya Swarm mode manager inital endpoint olacak , daha sonra Protainer’i ayaga kaldirdigimizda daha fazla endpoint yani diger docker node’lari , swarm mode calisan clusterlari tek bir noktadan yonetebilirsiniz.
Standalone node icin asagidaki komutu calistirmak yeterli olacak
docker run -d -p 9000:9000 portainer/portainer
Benim elimde docker swarm mode calisan bir clusterim oldugundan asagidaki sekilde kurulumu yapiyor olacagim.
noroot@swarmmaster:~$ sudo docker service create –name portainer –publish 9000:9000 –constraint ‘node.role == manager’ –mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock portainer/portainer -H unix:///var/run/docker.sock
Bundan sonra http://<swarm_manager>:9000 diyerek GUI’ye erisecegiz , ilk kurulum sonrasi size admin kullanicisina bir kullanici adi ve sifre atamanizi isteyecek ve daha sonradan login sayfasi gelecek buraya admin kullanici adi ve atadiginiz sifre ile login olun.
Not : Illa portainerin bir docker imaj olarak kurulmasina gerek yok ilgili linkde binary dosyalarini indiripde calistirabilirsiniz.
Iste karsinizda GUI ve sahip oldugumuz tanittigimiz endpoint uzerinden gordugumuz tum imaj , volume ve Container’lar mevcut
Simdi sanki cli’da docker node ls yapiyormus gibi sol menudeki Swarm tabina tiklayin
Ilgili nodeun uzerine tikladiginizda ;
- Node Availability degelerini degistirebilir , ilgili nodeu clusterdan alabilir veya tekrardan devreye alabilir
- Node label atayabilir
- Swarm deyimiyle tasklari yani calisan containerlari gorebilirsiniz
Docker Swarm servislerini gorebilir , scale edebilir yeni servisler yaratabilirsiniz.
Portainer’in degisik ozelliklerinden biri size uygulama sablonlari sunmasi , su anda docker swarm uzerinde service olarak kurulum yapilamiyor ama standalone docker nodelar uzerinde listedeki Mongo, mysql , Elasticsearch , WordPress , Magento gibi uygulamalar kurulabiliyor. Linuxserver.io ilede bir isbirligi soz konusu.
Diger guzel bir ozellikte docker uzerine bir guvenlik katmani ekleyerek dogrulanmis kullanicilarin kendilerine ait olan kaynaklari yonetebiliyor olmalari. Burada su anlik cok genis bir opsiyon yok mesela RBAC gibi fakat farkli kullanicilar yaratip , bunlarla login olundugunda Private servis veya container’lar yaratabilyorsunuz , buda digerlerinin sizin yarattiginiz kaynaklara erisememsini sagliyor.
Guzel olmus , incelemeye kullanmaya deger GUI sevenler icin
Twitter uzerinden takip etmek icin ise @portainerio adresini takip edebilirsiniz.
VM
Labels Constraints Systemd Docker Secret
X firmasindayiz , firmanin bir IT ekibi var birde developer ekibi . X firmasi cok onemli bir yazilim gelistiriyor , tum ortam docker uzerinde kosuyor , microservice mimarisi mevcut, test staging ve production ortamlari var ve containerlari yonetmek icinde docker swarm mode kullaniliyor. (label,constraint anlatmak icin illa swarm mode gerekli degil, standalone docker daemon icinde ayni sey gecerli)
Soru : Bu cluster’daki tum containerlarin uzerinde kostugu sanal ve/veya fiziksel makineler homojen mi olmali ? Cesitli gereksinimlerde dolayi farklilik gostermesi gereken container nodelari var midir veya olmalimidir ?
Cevap tabiki olmalidir , cluster icersinde birbirinde farkli isler kosan uygulamalar olabilir mesela biri cpu tabanli isler yaparken digeri daha cok memory ihtiyaci duyabilir , bazilari ssd gibi cok hizli disklerde kosmasi gerekirken , ayni uygulamanin gelistirmeleri ssd uzerinde olmayabilir veya verinin external bir storage sistemi uzerinde tutulmasi gereken bir container olabilir.
Diger guzel bir ornek ise arastiriken Couchbase blogunda buldum, Interstellar filmini seyredeniz var ise Cocuhbase tam size gore 🙂 Multidimensional Scaling sagliyormus kendileri , ilgili blokta Query gibi yusek CPU isteyen . index gibi ssd’e ihtiyac duyan bilesenlerini docker swarm uzerinde nasil farkli node’lar uzerinde kosturursunuz onu yazmis, gayet guzel. Fakat ilgili makale benim icin farkli seyleri aramama sebep oldu.
Yeni Baslayanlar Icin Windows Server 2016 Uzerinde Docker
Windows 10 ve Windows 2016 Server ile beraber Docker artik dogal olarak destekleniyor farkli bir sanallastirma yazilimina (virtualbox gibi) ihtiyac duyulmadan. Hatta Microsoft Docker On Windows degil, Docker artik Windows’un dogal bir parcasi olarak adlandiriyor.
Windows 10 development , Windows Server 2016’da production icin oneriliyor. Windows 10 kullanicilarinin Professional veya Enterprise (Anniversary Edition) kullanmalari gerekiyor.
Microsoft 2016 Server ile beraber iki tip Container desteklemeye basladi bunlardan biri Windows Server Container diger ise Hyper-V Container.
Hyper-V Container dedigimiz sey aslinda bir Hyper-V uzerinde yaratilmis sanal bir sunucu ve icersinde calisan Container. Soyle bir gecmise donersek Containerlar ciktiginda hep daha guvenli olsun diye bir sanal makiner icersinde calisirsa iyi olur, tam izolasyon olur durumlari vardi , halen bu yaklasim guncelligini koruyor. Hyper-V Container kullanabilmek icinde haliyle Hyper-V role’unun kurulu olmasi gerekiyor. Keza Microsoft’da musterilerinin development icin Windows Container , production icin Hyper-V kullandigini soyluyor.
Windows Server Container‘da bizim host uzerinde kosacak, yine izole processler olacak, resimlersek Windows Server Container gordugunuz gibi Container Host uzerindeki Windows Kernal’i kullanirken , Hyper-V Containerlarin her biri tekil Windows Kernel uzerinde kosacaklar.
Dorukcloud uzerinden Docker Calistirmak – Openstack
Docker herkesin ilgilisini ceken , anlatmak istedigi, kullanmak istedigi, uygulamak istedigi fenomen birsey.
Bende bu makalede size DorukNet’in Openstack Cloud’u uzerinde nasil Docker calistirabileceginizi kisaca anlatacagim.
Docker-machine Openstack driver’i sayesinde Docker icin gidip elle bir instance (VM) yaratmayip , docker-machine kullanarak herseyi uzaktan yapicak olmamiz. Elimde bir adet Windows Enterprise 10 ve/veya Mac OS X ve uzerine docker-toolbox kurulu, icersindede docker-machine bileseni var. Ilgili bilesenleri kurmadiysaniz kurulum sekli ilgili makalede mevcut.
docker-machine create komutu –driver parametresi size ister Digital Ocean ister Amazaon , ister Azure ve Openstack ile isterseniz dorukcloud uzerindede diger cloud saglayicilar gibi Docker nodelarini otomatik kurmanizi ve uzaktan yonetmenizi saglar. Tum driver listesi icin bakiniz. Openstack parametreleri icin bakiniz.
Baslamadan once bilmemiz gereken birkac sey var ;
- dorukcloud openstack kullanici adiniz : demo_user1
- dorukcloud openstack kullanici sifreniz : demo_user1_sifre
- dorukcloud openstack auth-url : https://o.dorukcloud.com:5000/v2.0
- istenir ise identity version 3 kullanilabilir
- dorukcloud openstack tenant adi : Ilgili Docker instance’ini kuracaginiz proje adi , benim icin demo
- dorukcloud openstack imaj adi : Ubuntu-Xenial (Ubuntu 16.04)
- dorukcloud openstack flavor id : m1.medium (2 vcpu 4 gb ram 40 gb disk alani)
- Ubuntu-Xenial imajinin varsayili kullanici adi : ubuntu (Sifreye gerek yok key based auth yapilacak)
- dorukcloud openstack network adi : Demo-DBServers-Network1 (Docker instance’in ip alacagi sanal/gercek network (vxlan/GRE/VLAN))
- dorukcloud openstack floating ip pool : ext-net (Instance’in internet’den erisilebilir olmasi icin atanacak gercek ip)
- dorukcloud openstack instance adi : DockerSunucu1
Once Security Group Read the rest of this entry
Docker Docker-Toolbox Windows/Mac/Ubuntu
Docker-Toolbox for Windows Kurulumu
Alti seneden beridir ilk kez bir Microsoft Desktop isletim sistemi olan W10 Enterprise kurdum bu is icin, gulzemis Mac den sonra hala yeterince etkileyici degil ama dolar sagolsun ilerde bizi MACsiz birakabilir bizi ama halen alternatifler mevcut.
Bu toolbox icersinde ne var ?
- Docker CLI client for running Docker Engine to create images and containers
- Docker Machine so you can run Docker Engine commands from Windows terminals
- Docker Compose for running the
docker-compose
command - Kitematic, the Docker GUI
- the Docker QuickStart shell preconfigured for a Docker command-line environment
- Oracle VM VirtualBox
Oncelikle https://github.com/docker/toolbox/releases/tag/v1.12.2 adresiden DockerToolbox-1.12.2.exe ‘yi indirin.
docker cok kullanilan komutlar kisa kisa – Adim 3
Evet , hizlica cok kullanilir komutlari inceleyip gecelim ….
Elimizde docker container kuracak hangi imajlar var bakalim.
vahric:~ vahricmuhtaryan$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis latest 0f0e96f1f267 10 days ago 177.5 MB ubuntu latest b72889fa879c 2 weeks ago 188 MB
Ilgili kolonlari acikalamak gerekir ise repo adi olarak redis , sanki bir klasor acilmis ve icersine latest diye bir imaj koyulmus , her bir imajin tekil bir numarasi , ne zaman yaratildigi ve kapladigi alani belirtilmis.
Ek olarak isterseniz docker images <repo_adi> seklinde veya docker images <repo_adi>:tag gibide listeleme yapabilisiniz ama aradiginiz seyin %100 uyusmasi gerekiyor repo* veya re?po gibi bir arama mekanizmasi yok !
Simdi, bir imaj indirelim, diyelim centos en son surum ki burada ek birsey belirmeye gerek yok kendisi <tag> kismina bakarsaniz latest olarak belirtmis yani en son version centos.
vahric:~ vahricmuhtaryan$ docker pull centos Using default tag: latest
fakat diyelim siz en son surumu degilde bir onceki veya olan 6.6 surumune sahip imaji indirmek istiyorsunuz. Asagidaki komutta bir ustteki satira gore farki kullandigimiz <tag> yani centos:6.6 . Tag lar “:” den sonra belirtiliyor.
vahric:~ vahricmuhtaryan$ docker pull centos:6.6 6.6: Pulling from library/centos
docker-machine – Adim 2
docker-machine windows ve Mac OSX gibi isletim sistemleri uzerinden birden fazla Docker Host’u manage etmek icin kullanilan bir binary.
Ben Mac OSX kullanicisiyim ve makinemde Docker Toolbox kurulu ki icersinde docker-machine iceriyor , yok ise edinin kendisi ek olarak Linux ve Windows icinde mevcut.
docker-machine tek bir noktadan networkunuzdeki docker host’lari yonetebildigi gibi Digital Ocean , Openstack ve diger cloud provider’lardaki kaynak havuzunuzda docker host’lar hazirlayabilir ve yonetebilirsiniz.
Bu makalede generic driver kullanarak hali hazirda uzerinde ubuntu kurulu bir VM i sisteme tanitacagim (hatta oncesinde uzerinde Docker da kurulmus yani existing docker host’u ekliyoruz)
Simdi asil amacim docker-machine ile docker host’lari yonetmekten cok karsilastigim hatalar ve cozumleri belirtmek.
Herkes yaratarak baslar , biz silerek baslayalim ama oncesinde bir listeleyelim ne var diye ….
vahric:.ssh vahricmuhtaryan$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker01 – generic Running tcp://10.111.21.210:2376 Unknown Unable to query docker version: Unable to read TLS config: open /Users/vahricmuhtaryan/.docker/machine/machines/docker01/server.pem: no such file or directory
docker02 – generic Running tcp://10.111.21.210:2376 Unknown Unable to query docker version: Unable to read TLS config: open /Users/vahricmuhtaryan/.docker/machine/machines/docker02/server.pem: no such file or directory
Sonra silelim Read the rest of this entry
Hizlica ve Esitliklerle Docker – Adim 1
Amac = Dagitik uygulamalari yaratmak , bir yerden baska bir yere hizlica tasimak ve calistirmak .
Soyle bir amacda olabilir = Illa dagitik degil ya monolithic uygulamalar icinde kullanilabilir, kime ne !!!!
Paketlemek = Uygulamanin calismasi icin gerekli olan OS + library + dependency bir araya getirmek.
Baska Bir Deyisle Paketleme = Kodumuz (git uzerinde) + diyelimki php + apache2 lazim + PHP icin ek moduller (SimpleXML) gibi
Docker = Open Platform + Amac + Paketleme
Docker = Benim icin karakutu demek ! + Icine ne koyduysaniz hersey problemsiz ve %100 calisiyor kabul edilmeli
Kurulum yapmadan once ;
sourcing (linux source command) = dosyayi oku ve komutlari calistir demek
Ubuntu icin docker paketi = docker.io
Kernel > 3.10
{
noroot@kvm-ovs-server2:/etc/bash_completion.d$ uname -r”
3.16.0-55-generic
}