Asagidaki notlari “John Willis” tarafindan hazirlanmis YouTube videolarini izlerken aldim.
Asagidaki notlar hazirlandigi sirada bilgisayarimda kurulu Docker versiyonu 1.9.1, build a34a1d5
seklindeydi.
ps
Calisan calismayan tum container’lari listelemek icin:
Sadece calisan docker container’larini listelemek icin:
Calisan en son container’i gormek icin:
run
Bir docker image’ini kullarak bir container olusturmak icin asagidaki komut
kullanilir. Eger image henuz inidirilmemisse, yani docker images
ila
baktigimizda listede gozukmuyorsa, oncelikle o image Docker Hub’dan
indirilir.
run -i
run
komutunu -i
parametresi ile calistirdigimizda, eger container
olusturuldugunda calisacak olan default komut(Dockerfile’de bu CMD
ile
belirlenmistir) bizden input alacak bir komut ise(ornegin sh
), container’in
icinde shell komutlarini calistirabiliriz. busybox
image’ini kullanarak bir
container olusturudugumuzda default olarak sh
komutu calisir, ve bu bizim
komut girmemizi saglar.
Eger busybox
image’indeki komutu asagidaki gibi override edersek, bu
durumda container bir input icin beklemeden calisip hemen sonlanacaktir.
Yukaridaki komutlari calistirdiktan sonra docker ps -a
ile kontrol edersek, durmus olan container’lari gorururuz.
run -t
Container’a bir pseudo terminal araciligiyla baglanmamizi saglar.
t
parametresi ile ilgili detayli bilgi
bu linkte
bulunabilir.
Yukaridaki komuttan sonra CTRL+C
ile tty(pseudo termnial)’dan cikilir. Cikmis
olmamiza ragmen docker ps
komutu ile calisan container’lara baktigimizda hala
busybox
conainter’ini goruruz. docker stop
komutu ile container’in calismasini durdurabiliriz.
run -it
Intercative shell istiyorsak -it
parametersini kullaniriz. Asagidaki komut
ile olusturdugumuz container’in icine girip komutlarimizi calistirmaya baslayabiliriz.
Container’in icindeyken exit
komutu ile cikarsak container calismayi
durdurur, docker ps
komutu ile calisan container’i gormeyiz.
run -itd
ve attach
Asagidaki komut ile “busybox” image’ini kullanarak bir container olusturulur ve bu container arka planda(detached mode) calismaya devam eder.
Yukaridaki komut ile calistirilan container’a baglanmak icin once docker ps
komutu ile calisan container’lara bakip container ID’sini ogreniriz.
Yukaridaki ciktidan gorulecegi uzere “busybox” image’inden olusturulan
container calisir calismaz biz herhangi bir parametre gecmedigimiz icin
busybox’un Dockerfile’inda tanimlanan sh
komutunu calistirmis.
Container’a baglanmak icin ise asagidaki komutu kullaniriz. Asagidaki komuttan sonra, komut satirina dusmek icin Enter’a basilir.
Eger container’i calistirirken “busybox” image’i icin tanimlanmas default komut yerine kendi istedigimiz bir komutun calistirmasini istiyorsak:
Yukaridaki komutu calistirdiktan sonra docker ps
komutu ile calisan
container’lara baktigimizda bu son container’i goremeyiz. Cunku /bin/dmesg
komutu kullanicidan bir input beklemedigi icin calisip sonlanir ve bu da
container’in calismasini durdurur. Duran container’a ait bilgileri gormek icin
docker ps -a
komutunu kullandigimizda asagidaki bir cikti aliriz:
Yukaridaki ciktidaki STATUS
sutunu bize container’in sonlandigini gosterir.
/bin/dmesg
yerine /bin/cat
gibi kullanicidan bir input
bekleyen bir komut calistirsaydik, o zaman container arka planda calismaya devam
edecekti ve docker ps
ile baktigimizda calisan container’lar arasinda gorebilecektik.
Yukaridaki komutlarin ciktisi:
--name
Bir docker image’ini calistirirken isim vermek icin kullanilir.
stop
Calisan container’lari durdurmak icin once docker ps
ile calisan
container’lari buluruz sonra stop
komutu ile durduruz.
stop
komutu biraz yavas calisir.
Eger docker container’ini calistirirken --name
parametresi ile bir isim
vermissek, stop
komutunu o verdigimiz isimle birlikte de calistirabiliriz.
kill
kill
komutu stop
komutuna gore daha hizli calisir.
Sadece bir tane container’i durdurumak icin:
kill
komutu ile tum calisan docker container’larini durdurmak icin:
En son calistirdigimiz container’i durdurmak icin:
rm
Docker container’larinin container ID’si kullanilarak veya isimleri kullanilarak silinmesi.
Durmus olan tum container’larin silinmesi icin asagidaki komut kullanilir:
restart
Calisan bir docker container’ini durdurup baslatmak icin restart
komutu kullanilir.
exec
Bir docker container’inda bir process calistirmak icin exec
komutu kullanilir.
logs
Container’in output’a bastigi log’lari gormek icin kullanilir.
Yukaridaki komutlarin ciktisi asagidaki gibi olur:
inspect
Bir container hakkinda detayli bilgi almak icin inspect
komutu kullanilir.
stats
Calisan bir container’in ne kadar kaynak tukettiginin, disk IO, ve network trafiginin gorulmesi.
top
Calisan bir container’daki process’lerin ne kadar kaynak tukettiginin gorulmesi.
Sistemimizde kurulu Docker image’lerini listelemek icin:
Bir image hakkinda detayli bilgi almak icin:
history
“busybox” image’ini kullarak bir container olusturulma asamasinda “busybox” image’inin nasil bir surecten gectigini gormek icin asagidaki komutu kullaniriz.
Yukaridaki komutun ciktisi su sekilde:
search
Docker hub’da image aramasi yapmak:
En az 10 star almis docker image’leri arasindan arama yapmak:
pull
En son “ubuntu” docker image’ini Docker Hub’dan indirmek icin:
“14.04” ile tag’lenmis “ubuntu” docker image’ini indirmek icin ise:
Bir docker container’inde bir data volume olusturmak icin -v
parametresi
kullanilir. Asagidaki komut ile bir volume olusturulur ve bu volume /john1
seklinde container’in icinde mount edilir. Olusturulan volume host sistemde
/var/lib/docker/volumes
klasorunde tutulur. Bu volume’e yazilan veri docker
image’i silinse dahi silinmez. Ayrica bu volume diger docker container’larinda
ortak kullanilabilir.
Host sistemdeki bir path’i, calistirdigimiz bir docker container’ina mount etmek:
Sadece klasorler degil dosyalari da ayni sekilde mount edebiliriz:
Bazi durumlarda host’taki dosya veya klasorlerin containerin icinden
degistirilmemesi icin readonly mount etmek isteyebilirz. Ornegin host’taki
~/.vimrc
dosyasini container’a mount readonly mount edelim.
Asagidaki ornekte, once “john1” adinda bir container olusturuluyor, ve bu
container’da /john1
volume’u olusturuluyor. Bu container hala calisir
durumdayken, “john2” adinda yeni bir container olusturuluyor bu container
olusturulurken “john1” container’indaki volume “john2” containerina mount
ediliyor:
Calisan bir docker container’inin IP adresini ogrenmek. cid = container ID, nid = IP Address of Container