­čÉ│ Docker

Programlar─▒n kendi i┼čletim sistemimizden ba─č─▒ms─▒z olarak ├žal─▒┼čabilmesini sa─člayan bir sistemdir

­čŚŻ A├ž─▒klama

Uygulamalar─▒ kendi PC'ne kurmak, kald─▒rmak, hatalar─▒yla veya art─▒klar─▒yla u─čra┼čmak istemiyorsan, do─čru konumdas─▒n :)

  • Docker'─▒n ana sayfas─▒ i├žin buraya t─▒klayabilirsin.

Bu yaz─▒ detayl─▒ anlatan blog yaz─▒s─▒n─▒n ├Âzeti niteli─čindedir, orijinali i├žin buraya t─▒klaman─▒ tavsiye ederim.

ÔŁö Nedir ve Neden Kullanmal─▒y─▒m?

  • Benim Makinemde ├çal─▒┼č─▒yor (Works on my Machine) Problemine ├ç├Âz├╝m Sa─člamas─▒

  • Geli┼čtirme Ortam─▒ Standardizasyonu (E┼čitlik) Sa─člamas─▒

  • Test ve Entegrasyon Ortam─▒ Kurulumu ve Y├Ânetimini Kolayla┼čt─▒rmas─▒

  • Mikroservis Mimari i├žin Kolay ve H─▒zl─▒ Bir ┼×ekilde Kullan─▒ma Haz─▒r Hale Getirilebilmesi

  • Kaynaklar─▒n Etkili ve Efektif Bir Bi├žimde Kullan─▒lmas─▒n─▒ Sa─člamas─▒

  • Multitenant Sistemlerde Tenancy Mant─▒─č─▒n─▒ Uygulama Seviyesinden ├ç─▒karmay─▒ Sa─člamas─▒

  • Vm teknolojisi gibi birden fazla kernel kullanmak yerine tek bir kernel yap─▒s─▒nda birden fazla uygulama ├žal─▒┼čt─▒rmay─▒ sa─člar.

  • T├╝m bu i┼člemler image ad─▒ verilen y├╝klemelerle olmakta.

    • Image'lerin di─čer art─▒s─▒ da normal program kurulumlar─▒ gibi y├╝ksek yer kaplamamakta ve docker'─▒a ├Âzel optimize edilmi┼č haldedirler. (Daha az performans ister)

  • T├╝m bunlara ek olarak kod payla┼č─▒mlar─▒ hususunda da olduk├ža faydal─▒d─▒r.

    • Kod'un docker ortam─▒nda ├žal─▒┼čabilir olmas─▒ docker y├╝kl├╝ di─čer bilgisayarda da ├žal─▒┼čabilir olaca─č─▒ anlam─▒na gelir.

  • Kolay kald─▒r─▒labilir.

    • Docker ├╝zerinden image'leri silmeniz durumunda uygulama ve ona ba─čl─▒ olan her ┼čey silineceltir. (Kendi bilgisayar─▒m─▒zda kald─▒rma i┼člemi sonucunda ard─▒nda art─▒k dosya b─▒rakmaktad─▒r.)

­čĽÁ´ŞĆÔÇŹ Nas─▒l ├ľ─črenirim

  • ÔÇőBuraya t─▒klayarak resmi d├Âk├╝mantasyonuna bakabilirsin.

  • Docker olay─▒n─▒ ├Âzetleyen video i├žin buraya t─▒klayabilirsin.

  • Docker'─▒ detayl─▒ anlatan T├╝rk├že blog i├žin buraya t─▒klayabilirsin. ­čĹł Tavsiye

­čĄŞÔÇŹ K─▒sa ├ľzet

ÔÇőDocker Cheet Sheats'e bakmanda fayda var.

Terim

A├ž─▒klama

Container

Docker Daemon taraf─▒ndan Linux ├žekirde─či i├žerisinde birbirinden izole olarak ├žal─▒┼čt─▒r─▒lan processÔÇÖlerin her birine verilen isimdir.

Image

Container'lar─▒n ├žal─▒┼čaca─č─▒ i┼čletim sistemi, programlar vs.

Dockerfile

Yap─▒land─▒rma dosyalar─▒

Docker Daemon

Birbirinden ba─č─▒ms─▒z Container'lar─▒ bar─▒nd─▒ran, sistemin kullanaca─č─▒ RAM, CPU gibi ayarlar─▒ yapan katman. (Resimle daha a├ž─▒k olacakt─▒r)

Docker CLI

Docker Daemon ile ileti┼čime ge├žti─čimiz k─▒s─▒m. CMD, Bash vs.. (evet siyah ekran)

Docker Registry

Container'larda ├žal─▒┼čan Image'lerin bulundu─ču k─▒s─▒m

Docker Repository

Bir grup ImageÔÇÖ─▒n olu┼čturdu─ču yap─▒

­čĹĘÔÇŹ­čĺ╗ Kullan─▒m

ÔşÉ Temel ─░┼člemler

  • Docker'dan Image ├žekme

    • docker pull <image_ismi>

  • Image'leri g├Âr├╝nt├╝leme

    • docker images

  • Image ├žal─▒┼čt─▒rma (Image ile container olu┼čturma)

    • docker run <image_ismi>

    • docker run -p <host_port>:<conotainer_port> <image_ismi>

      • ─░mage'i ├žal─▒┼čt─▒r─▒p htttps:localhost:'unu, container'─▒n 'una ba─člama.

      • docker run -p 8080:80 nginx

­čĺí E─čer image y├╝kl├╝ de─čilse otomatik indirir!

­čôé Conteiner ─░┼člemleri

  • ├çal─▒┼čan containerlar─▒ g├Âsterme

    • docker ps

    • docker ps -a

  • Olu┼čturulan container'─▒ yeniden ├žal─▒┼čt─▒rma

    • docker start <container_id>

      • <container_id>'yi docker ps -a ile bulabilirsiniz.

    • docker start -a <container-id>

      • Terminale ekleyerek ba┼člatma. (I/O giri┼či ile kontrol edebiliriz.)

  • Container kay─▒tlar─▒n─▒ g├Âr├╝nt├╝leme (loglar)

    • docker logs <container_id>

  • Container silme

    • docker rm <container-id>

    • docker rm -f <container-id>

      • ├çal─▒┼č─▒r halde bile olsa silme (Forging)

  • Container ├╝zerinde uygulama ├žal─▒┼čt─▒rma

    • docker exec <options> <container_id> <path>

    • docker exec -it <container_id> /bin/bash

      • -i interactive terminal demek

      • -t terminale ba─člamak demek (attach)

      • -d ba─člamadan ├žal─▒┼čt─▒r demek (deattach)

      • Container ├╝zerinde ├žal─▒┼čan i┼člemleri (process'leri) g├Âsterme

        • ps -ef

      • Dosyay─▒ terminale basma

        • more <path>

        • more /etc/nginx/nginx.conf

        • more /etc/nginx/conf.d/default.conf

  • Container'─▒ ├ž─▒k─▒┼ča zorlama

    • docker kill <container_id>

­čľĄ T├╝m Docker Komutlar─▒

docker_command

Komut

A├ž─▒klamas─▒

docker images

Lokal registryÔÇÖde mevcut bulunan ImageÔÇÖlar─▒ listeler

docker ps

Halihaz─▒rda ├žal─▒┼čmakta olan ContainerÔÇÖlar─▒ listeler

docker ps -a

Docker Daemon ├╝zerindeki b├╝t├╝n ContainerÔÇÖlar─▒ listeler

docker ps -aq

Docker Daemon ├╝zerindeki b├╝t├╝n ContainerÔÇÖlar─▒n IDÔÇÖlerini listeler

docker pull <repository_name>/<image_name>:<image_tag>

Belirtilen ImageÔÇÖ─▒ lokal registryÔÇÖye indirir. ├ľrnek: docker pull gsengun/jmeter3.0:1.7

docker top <container_id>

─░lgili ContainerÔÇÖda top komutunu ├žal─▒┼čt─▒rarak ├ž─▒kt─▒s─▒n─▒ g├Âsterir

docker run -it <image_id veya image_name> CMD

Verilen ImageÔÇÖdan terminalÔÇÖi attach ederek bir Container olu┼čturur

docker pause <container_id>

─░lgili ContainerÔÇÖ─▒ duraklat─▒r

docker unpause <container_id>

─░lgili Container pause ile duraklat─▒lm─▒┼č ise ├žal─▒┼čmas─▒na devam ettirilir

docker stop <container_id>

─░lgili ContainerÔÇÖ─▒ durdurur

docker start <container_id>

─░lgili ContainerÔÇÖ─▒ durdurulmu┼čsa tekrar ba┼člat─▒r

docker rm <container_id>

─░lgili ContainerÔÇÖ─▒ kald─▒r─▒r fakat ili┼čkili VolumeÔÇÖlara dokunmaz

docker rm -v <container_id>

─░lgili ContainerÔÇÖ─▒ ili┼čkili VolumeÔÇÖlar ile birlikte kald─▒r─▒r

docker rm -f <container_id>

─░lgili ContainerÔÇÖ─▒ zorlayarak kald─▒r─▒r. ├çal─▒┼čan bir Container ancak -f ile kald─▒r─▒labilir

docker rmi <image_id veya image_name>

─░lgili ImageÔÇÖ─▒ siler

docker rmi -f <image_id veya image_name>

─░lgili ImageÔÇÖ─▒ zorlayarak kald─▒r─▒r, ba┼čka isimlerle TagÔÇÖlenmi┼č ImageÔÇÖlar -f ile kald─▒r─▒labilir

docker info

Docker DaemonÔÇÖla ilgili ├Âzet bilgiler verir

docker inspect <container_id>

─░lgili ContainerÔÇÖla ilgili detayl─▒ bilgiler verir

docker inspect <image_id veya image_name>

─░lgili ImageÔÇÖla ilgili detayl─▒ bilgiler verir

docker rm $(docker ps -aq)

B├╝t├╝n ContainerÔÇÖlar─▒ kald─▒r─▒r

docker stop $(docker ps -aq)

├çal─▒┼čan b├╝t├╝n ContainerÔÇÖlar─▒ durdurur

docker rmi $(docker images -aq)

B├╝t├╝n ImageÔÇÖlar─▒ kald─▒r─▒r

docker images -q -f dangling=true

Dangling (taglenmemi┼č ve bir Container ile ili┼čkilendirilmemi┼č) ImageÔÇÖlar─▒ listeler

docker rmi $(docker images -q -f dangling=true)

Dangling ImageÔÇÖlar─▒ kald─▒r─▒r

docker volume ls -f dangling=true

Dangling VolumeÔÇÖlar─▒ listeler

docker volume rm $(docker volume ls -f dangling=true -q)

Danling VolumeÔÇÖlar─▒ kald─▒r─▒r

docker logs <container_id>

─░lgili ContainerÔÇÖ─▒n terminalinde o ana kadar olu┼čan ├ž─▒kt─▒y─▒ g├Âsterir

docker logs -f <container_id>

─░lgili ContainerÔÇÖ─▒n terminalinde o ana kadar olu┼čan ├ž─▒kt─▒y─▒ g├Âsterir ve -f follow parametresi ile o andan sonra olu┼čan loglar─▒ da g├Âstermeye devam eder

docker exec <container_id> <command>

├çal─▒┼čan bir Container i├žinde bir komut ko┼čturmak i├žin kullan─▒l─▒r

docker exec -it <container_id> /bin/bash

├çal─▒┼čan bir Container i├žinde terminal a├žmak i├žin kullan─▒l─▒r. ─░lgili ImageÔÇÖda /bin/bash bulundu─ču varsay─▒m─▒ ile

docker attach <container_id>

├ľnceden detached modda -d ba┼člat─▒lan bir ContainerÔÇÖa attach olmak i├žin kullan─▒l─▒r

­čöŚ Harici Ba─člant─▒lar