Ayhan ARDA

Centos 7 ‘de Docker ve Docker Compose Kurulumu ile Kullanımı

docker compose

<p>Docker Compose&comma; multi-container uygulamalar&inodot;n&inodot;z&inodot; gereksinimleri ile birlikte tek bir dosyaya tan&inodot;mlayarak akabinde tek bir komut ile reçetesini yazd&inodot;&gbreve;&inodot;n&inodot;z container &inodot; aya&gbreve;a kald&inodot;rman&inodot;z&inodot; sa&gbreve;lamaktad&inodot;r&period;<&sol;p>&NewLine;<p>&Scedil;imdi elimizde s&inodot;f&inodot;r kurulu ve updateleri yap&inodot;lm&inodot;&scedil; bir centos 7 var &comma; bir public ip verdim &lpar; burada bolca var &colon;&rpar; &rpar; &comma; siz private ip de verebilirsiniz &comma; sonuç olarak ssh eri&scedil;imim de var ve makina bir &scedil;ekilde internete ç&inodot;k&inodot;yor&comma; buraya kadar tamam ise konuya girebiliriz&period;<&sol;p>&NewLine;<p>Bu arada docker compose eski fig in yerini ald&inodot; &comma; fig duyar iseniz art&inodot;k o deprecated oldu ve resmi olarak docker compose diye an&inodot;l&inodot;yor&period;<&sol;p>&NewLine;<p>Öncelikle Docker imajlar&inodot; hakk&inodot;nda bilgi verelim &comma; Her bir docker container &inodot; &comma; bir docker imaj&inodot;n&inodot;n yerel bir kopyas&inodot;d&inodot;r&period; Docker imajlar&inodot;n&inodot; bir linux i&scedil;letim sistemi gibi dü&scedil;ünebilirsiniz ancak &scedil;ö&scedil;nde sadece minimal gereksinimler bulunmaktad&inodot;r ve bu imajlar ana host un kernel ini kullan&inodot;rlar fakat çal&inodot;&scedil;an bir container &inodot;n içine girerseniz sadece o container &inodot;n dosya sistemini görürsünüz&period;<&sol;p>&NewLine;<p>En çok kullan&inodot;lan imaj lar&inodot; docker hub da bulabilirsiniz &comma; Bunlar docker team taraf&inodot;ndan kontrol edilir ve baz&inodot; imajlar&inodot;n alt&inodot;nda official ibaresini görür iseniz bu imajlara güvenebilirsiniz çünkü docker team bunlar&inodot; test etmi&scedil;tir&period;<&sol;p>&NewLine;<p>&Scedil;imdi docker kurarak ba&scedil;layal&inodot;m &comma; bu i&scedil; için yine docker team &inodot;n haz&inodot;rlad&inodot;&gbreve;&inodot; bir shell script i ça&gbreve;&inodot;r&inodot;p çal&inodot;&scedil;t&inodot;raca&gbreve;&inodot;z&period;<&sol;p>&NewLine;<p>Centos 7 de wget öntan&inodot;ml&inodot; gelmiyor &comma; a&scedil;a&gbreve;&inodot;daki komut ile indirebilirsiniz&period;<&sol;p>&NewLine;<p><strong>yum install wget<&sol;strong><&sol;p>&NewLine;<p>&Scedil;imdi scriptimizi çekiyor ve çal&inodot;&scedil;t&inodot;r&inodot;yoruz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num;<strong> wget -qO- https&colon;&sol;&sol;get&period;docker&period;com&sol; &vert; sh<&sol;strong><&sol;p>&NewLine;<p>Yakla&scedil;&inodot;k 30 sn içinde kurulum tamamland&inodot; &comma; &scedil;imdi kurulup kurulmad&inodot;&gbreve;&inodot;n&inodot; a&scedil;a&gbreve;&inodot;daki &scedil;ekilde do&gbreve;rulayabiliriz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num;<strong> docker version<&sol;strong><br &sol;>&NewLine;Client&colon;<br &sol;>&NewLine;Version&colon; 1&period;10&period;3<br &sol;>&NewLine;API version&colon; 1&period;22<br &sol;>&NewLine;Go version&colon; go1&period;5&period;3<br &sol;>&NewLine;Git commit&colon; 20f81dd<br &sol;>&NewLine;Built&colon; Thu Mar 10 15&colon;39&colon;25 2016<br &sol;>&NewLine;OS&sol;Arch&colon; linux&sol;amd64<&sol;p>&NewLine;<p>E&gbreve;er docker &inodot; root olmayan bir kullan&inodot;c&inodot; ile kullanacak iseniz a&scedil;a&gbreve;&inodot;daki komutla kendinizi docker grubuna dahil edebilirsiniz&period;<&sol;p>&NewLine;<p><strong>usermod -aG docker &dollar;&lpar;whoami&rpar;<&sol;strong><&sol;p>&NewLine;<p>E&gbreve;er root iseniz yukar&inodot;daki komutu kullanman&inodot;za gerek yok &comma; &scedil;imdi docker &inodot; ba&scedil;latal&inodot;m ve bundan sonraki rebootlar sonunda tekrar çal&inodot;&scedil;acak hale getirelim &comma; a&scedil;a&gbreve;&inodot;daki 2 komutu kullanabilirsiniz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>systemctl enable docker&period;service<&sol;strong><br &sol;>&NewLine;Created symlink from &sol;etc&sol;systemd&sol;system&sol;multi-user&period;target&period;wants&sol;docker&period;service to &sol;usr&sol;lib&sol;systemd&sol;system&sol;docker&period;service&period;<br &sol;>&NewLine;&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>systemctl start docker&period;service<&sol;strong><&sol;p>&NewLine;<p>Art&inodot;k docker çal&inodot;&scedil;&inodot;r durumda&period; &Scedil;imdi docker compose kurulumuna geçebiliriz&period;<&sol;p>&NewLine;<p>Öncelikle python-pip kuruyorum çünkü docker compose u pip ile kuraca&gbreve;&inodot;m&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>yum install epel-release<&sol;strong><&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>yum install -y python-pip<&sol;strong><&sol;p>&NewLine;<p>&Scedil;imdi docker compose u kuruyoruz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>pip install docker-compose<&sol;strong><&sol;p>&NewLine;<p>Kurulum tamamland&inodot;&period;&Scedil;imdi hemen docker compose ile bir container aya&gbreve;a kald&inodot;ral&inodot;m&period;<&sol;p>&NewLine;<p>&Scedil;imdi yaml dosyam&inodot;z için bir klasör aç&inodot;p içine giriyorum&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>mkdir hello-world<&sol;strong><br &sol;>&NewLine;&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>cd hello-world<&sol;strong><&sol;p>&NewLine;<p>docker-compose&period;yml isimli dosyam&inodot;z&inodot; olu&scedil;turup içine reçetemizi yazaca&gbreve;&inodot;z&period; Ben favori editör olarak nano kullan&inodot;yorum &comma; Siz farkl&inodot; bir editor kullanabilirsiniz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers hello-world&rsqb;&num; nano docker-compose&period;yml<&sol;p>&NewLine;<p>içine a&scedil;a&gbreve;&inodot;daki sat&inodot;rlar&inodot; yazabilir ve kaydedebilirsiniz&period;<&sol;p>&NewLine;<p>ayhanarda-test&colon;<br &sol;>&NewLine;image&colon; hello-world<&sol;p>&NewLine;<p>Yani a&scedil;a&gbreve;&inodot;daki gibi gözükmeli&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers hello-world&rsqb;&num; <strong>cat docker-compose&period;yml<&sol;strong><br &sol;>&NewLine;ayhanarda-test&colon;<br &sol;>&NewLine;image&colon; hello-world<&sol;p>&NewLine;<p>&Scedil;imdi yapmam&inodot;z gereken tek bir hareket kald&inodot; &comma; bu prospektüsün yaz&inodot;l&inodot; oldu&gbreve;u container&inodot; up etmek &comma; hala hello-world klasörümüzün içinde iken a&scedil;a&gbreve;&inodot;daki komutu kullanabilirsiniz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers hello-world&rsqb;&num; <strong>docker-compose up<&sol;strong><br &sol;>&NewLine;Pulling ayhanarda-test &lpar;hello-world&colon;latest&rpar;&&num;8230&semi;<br &sol;>&NewLine;latest&colon; Pulling from library&sol;hello-world<br &sol;>&NewLine;03f4658f8b78&colon; Pull complete<br &sol;>&NewLine;a3ed95caeb02&colon; Pull complete<br &sol;>&NewLine;Digest&colon; sha256&colon;8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7<br &sol;>&NewLine;Status&colon; Downloaded newer image for hello-world&colon;latest<br &sol;>&NewLine;Creating helloworld&lowbar;ayhanarda-test&lowbar;1<br &sol;>&NewLine;Attaching to helloworld&lowbar;ayhanarda-test&lowbar;1<br &sol;>&NewLine;ayhanarda-test&lowbar;1 &vert;<br &sol;>&NewLine;ayhanarda-test&lowbar;1 &vert; Hello from Docker&period;<br &sol;>&NewLine;&&num;8230&semi;<br &sol;>&NewLine;&period;&period;<&sol;p>&NewLine;<p>&Scedil;imdi belirtti&gbreve;imiz image &inodot; indirdik &comma; hadi bunu do&gbreve;rulayal&inodot;m&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers hello-world&rsqb;&num; <strong>docker images<&sol;strong><br &sol;>&NewLine;REPOSITORY TAG IMAGE ID CREATED SIZE<br &sol;>&NewLine;<em>hello-world<&sol;em> latest 690ed74de00f 5 months ago 960 B<&sol;p>&NewLine;<p>&Scedil;imdi ayn&inodot; yöntemle bir de nginx kuruyorum &comma; bunu yazmayaca&gbreve;&inodot;m &comma; &scedil;imdi docker hub da offical nginx i bulup ad&inodot;n&inodot; do&gbreve;rulay&inodot;p ayn&inodot; yöntem ile olu&scedil;turabilirsiniz&period; Docker ps ile çal&inodot;&scedil;t&inodot;&gbreve;&inodot;n&inodot; görebilirsiniz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>docker ps<&sol;strong><br &sol;>&NewLine;CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES<br &sol;>&NewLine;e37b79df162b nginx &&num;8220&semi;nginx -g &&num;8216&semi;daemon off&&num;8221&semi; About a minute ago Up About a minute 80&sol;tcp&comma; 443&sol;tcp nginx&lowbar;nginx&lowbar;1<&sol;p>&NewLine;<p>Yukar&inodot;da bir Container id göreceksiniz &comma; her çal&inodot;&scedil;an container &inodot;n bir id si vard&inodot;r&comma; yani e&gbreve;er biz bu container &inodot;n dosya sistemine girmek ister isek a&scedil;a&gbreve;&inodot;daki gibi o makinan&inodot;n içine eri&scedil;ebiliriz &comma; hatta nginx in conf dosyas&inodot;nda de&gbreve;i&scedil;iklik yapabiliriz &comma; i&scedil;imiz bitince exit yazarak ç&inodot;kabiliriz&period;<&sol;p>&NewLine;<p>&lbrack;root&commat;ayhanarda-containers ~&rsqb;&num; <strong>docker exec -it e37b79df162b &sol;bin&sol;bash<&sol;strong><br &sol;>&NewLine;root&commat;e37b79df162b&colon;&sol;&num; cd etc&sol;nginx&sol;conf&period;d&sol;<br &sol;>&NewLine;root&commat;e37b79df162b&colon;&sol;etc&sol;nginx&sol;conf&period;d&num; ls<br &sol;>&NewLine;default&period;conf<&sol;p>&NewLine;<p>Farkl&inodot; docker-compose ve multi-container örnekleri ile yak&inodot;nda görü&scedil;mek üzere&period;&period;<&sol;p>&NewLine;<p>Ayhan ARDA<&sol;p>&NewLine;&NewLine;

Mobil sürümden çık