Asagidaki notlari “John Willis” tarafindan hazirlanmis YouTube videolarini izlerken aldim.
Asagidaki notlar hazirlandigi sirada bilgisayarimda kurulu Docker versiyonu 1.9.1, build a34a1d5 seklindeydi.
psCalisan calismayan tum container’lari listelemek icin:
$ docker ps -a
$ docker ps -aqSadece calisan docker container’larini listelemek icin:
$ docker ps
$ docker ps -qCalisan en son container’i gormek icin:
$ docker ps -l
$ docker ps -lqrunBir 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.
$ docker run busyboxrun -irun 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.
$ docker run -i busyboxEger busybox image’indeki komutu asagidaki gibi override edersek, bu
durumda container bir input icin beklemeden calisip hemen sonlanacaktir.
$ docker run -i busybox echo hello
$ docker run -i busybox touch file.txtYukaridaki komutlari calistirdiktan sonra docker ps -a ile kontrol edersek, durmus olan container’lari gorururuz.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f63efc5ad449 busybox "touch file.txt" 7 seconds ago Exited (0) 7 seconds ago prickly_poitras
902c6abd891d busybox "echo hello" 12 seconds ago Exited (0) 11 seconds ago sharp_tesla
76d675c8ca65 busybox "sh" 25 seconds ago Exited (0) 17 seconds ago tender_morserun -tContainer’a bir pseudo terminal araciligiyla baglanmamizi saglar.
t parametresi ile ilgili detayli bilgi
bu linkte
bulunabilir.
$ docker run -t busyboxYukaridaki 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 -itIntercative shell istiyorsak -it parametersini kullaniriz. Asagidaki komut
ile olusturdugumuz container’in icine girip komutlarimizi calistirmaya baslayabiliriz.
$ docker run -it busyboxContainer’in icindeyken exit komutu ile cikarsak container calismayi
durdurur, docker ps komutu ile calisan container’i gormeyiz.
run -itd ve attachAsagidaki komut ile “busybox” image’ini kullanarak bir container olusturulur ve bu container arka planda(detached mode) calismaya devam eder.
$ docker run -itd busyboxYukaridaki komut ile calistirilan container’a baglanmak icin once docker ps
komutu ile calisan container’lara bakip container ID’sini ogreniriz.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0599d3a63f8 busybox "sh" 4 seconds ago Up 4 seconds berserk_hawkingYukaridaki 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.
$ docker attach b0599d3a63f8Eger container’i calistirirken “busybox” image’i icin tanimlanmas default komut yerine kendi istedigimiz bir komutun calistirmasini istiyorsak:
$ docker run -itd busybox /bin/dmesgYukaridaki 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:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b42f93e1da2 busybox "/bin/dmesg" 10 seconds ago Exited (0) 9 seconds ago evil_snyderYukaridaki 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.
$ docker run -itd busybox /bin/cat
$ docker psYukaridaki komutlarin ciktisi:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c62b281274d busybox "/bin/cat" 2 seconds ago Up 1 seconds big_saha--nameBir docker image’ini calistirirken isim vermek icin kullanilir.
$ docker run --name john1 -itd busyboxstopCalisan container’lari durdurmak icin once docker ps ile calisan
container’lari buluruz sonra stop komutu ile durduruz.
$ docker stop 6e41ef36fdc7stop komutu biraz yavas calisir.
Eger docker container’ini calistirirken --name parametresi ile bir isim
vermissek, stop komutunu o verdigimiz isimle birlikte de calistirabiliriz.
$ docker stop john1killkill komutu stop komutuna gore daha hizli calisir.
Sadece bir tane container’i durdurumak icin:
$ docker stop 6e41ef36fdc7kill komutu ile tum calisan docker container’larini durdurmak icin:
$ docker kill $(docker ps -q)En son calistirdigimiz container’i durdurmak icin:
$ docker kill $(docker ps -ql)rmDocker container’larinin container ID’si kullanilarak veya isimleri kullanilarak silinmesi.
$ docker ps -a
$ docker rm a759cdfefc9d
$ docker rm john1Durmus olan tum container’larin silinmesi icin asagidaki komut kullanilir:
$ docker rm $(docker ps -aq)restartCalisan bir docker container’ini durdurup baslatmak icin restart komutu kullanilir.
$ docker run -itd busybox
$ docker restart ebf3e3609c56execBir docker container’inda bir process calistirmak icin exec komutu kullanilir.
$ docker run -itd busybox
$ docker exec ebf3e3609c56 lslogsContainer’in output’a bastigi log’lari gormek icin kullanilir.
$ docker run -itd busybox cat /etc/hosts
$ docker logs $(docker ps -alq)Yukaridaki komutlarin ciktisi asagidaki gibi olur:
172.17.0.2 7c9d96519bdc
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersinspectBir container hakkinda detayli bilgi almak icin inspect komutu kullanilir.
$ cid=$(docker run -itd busybox)
$ echo $cid
$ docker inspect $cidstatsCalisan bir container’in ne kadar kaynak tukettiginin, disk IO, ve network trafiginin gorulmesi.
$ docker run -itd --name job1 busybox
$ docker stats job1topCalisan bir container’daki process’lerin ne kadar kaynak tukettiginin gorulmesi.
$ docker run -itd --name job2 busybox
$ watch docker top job2 -efSistemimizde kurulu Docker image’lerini listelemek icin:
$ docker imagesBir image hakkinda detayli bilgi almak icin:
$ docker inspect busyboxhistory“busybox” image’ini kullarak bir container olusturulma asamasinda “busybox” image’inin nasil bir surecten gectigini gormek icin asagidaki komutu kullaniriz.
$ docker history busyboxYukaridaki komutun ciktisi su sekilde:
IMAGE CREATED CREATED BY SIZE COMMENT
ac6a7980c6c2 4 weeks ago /bin/sh -c #(nop) CMD ["sh"] 0 B
c00ef186408b 4 weeks ago /bin/sh -c #(nop) ADD file:c295b0748bf05d4527 1.113 MB searchDocker hub’da image aramasi yapmak:
$ docker search ubuntuEn az 10 star almis docker image’leri arasindan arama yapmak:
$ docker search -s 10 ubuntupullEn son “ubuntu” docker image’ini Docker Hub’dan indirmek icin:
$ docker pull ubuntu“14.04” ile tag’lenmis “ubuntu” docker image’ini indirmek icin ise:
$ docker pull ubuntu:14.04Bir 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.
$ docker run -it -v /john1 busybox
#inside-container> cd /john1
#inside-container> touch file1Host sistemdeki bir path’i, calistirdigimiz bir docker container’ina mount etmek:
$ mkdir /tmp/john1
$ docker run -it -v /tmp/john1:/john1 busyboxSadece klasorler degil dosyalari da ayni sekilde mount edebiliriz:
$ docker run -it -v ~/.bash_history:/.bash_history busyboxBazi 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.
$ docker run -it -v ~/.vimrc:/.vimrc:ro busyboxAsagidaki 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:
$ docker run -it --name john1 -v /john1 busybox
$ docker run -it --name john2 --volumes-from john1 busyboxCalisan bir docker container’inin IP adresini ogrenmek. cid = container ID, nid = IP Address of Container
$ cid=$(docker run -itd busybox)
$ echo $cid
$ nid=$(docker inspect --format '' $cid)
$ echo $nid