Bu yazıda temel docker komutları üzerinde duracağız ve bir uygulamayı dockerize edip çalıştırmayı deneyeceğiz.
Docker ile ilgili önceki yazılarımızı okumadıysanız oradan başlamak çok faydalı olacaktır. İlgili yazılara aşağıdaki linklerden ulaşabilirsiniz.
- https://bilisim.io/2019/02/18/docker-terminolojisi/
- https://bilisim.io/2017/07/02/docker-terminoloji-sozlugu/
- https://bilisim.io/2017/03/26/docker-ilk-uygulamamiz/
- https://bilisim.io/2017/02/15/docker-mimarisine-giris/
Ama benim makinemde çalışıyordu! (Yazılımcı Atasözü)
Eğer bilgisayarınızda docker kurulu değilse buradan indirebilirsiniz.
Hızlı Başlangıç
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
docker --version Docker version 19.03.8 docker version Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11 01:21:11 2020 OS/Arch: darwin/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.8 API version: 1.40 (minimum version 1.12) Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11 01:29:16 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: v1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683 |
Github üzerinden Docker’ın oluşturduğu Go ile yazılmış projeler mevcut. Dockerfile’ları da yazıldığı için oradan indirim kendi makinemizde çalıştırmaya deneyelim. Ben bir tanesini çalıştıracağım, siz diğerlerini de inceleyip, deneyebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
$git clone https://github.com/docker/doodle.git $cd doodle/summer2019/ $docker build . #build komutuyla Dockerfile içerisindeki gerekli paketleri indirdi ve docker image oluşturdu. #Build işlemi bitti ve çıktımız aşağıdaki gibidir. Successfully built 7c6de71592b1 $docker images $docker image ls #yukarı iki komut da aynı işi yapmaktadır. oluşan image'ları listelemek için kullanılır. oluşan image bilgileri aşağıdaki gibidir. REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 01fbb1867dbd About a minute ago 356MB #build işlemi sırasında bir tag vermediğimiz için bir ismi yok. şimdi onu verebiliriz. $docker build -t bilisimio . Successfully built 7c6de71592b1 Successfully tagged bilisimio:latest $docker images REPOSITORY TAG IMAGE ID CREATED SIZE bilisimio latest 7c6de71592b1 About a minute ago 4.02MB <none> <none> 01fbb1867dbd About a minute ago 356MB # şimdi image'ımıza bir isim vermiş olduk. Bir version belirtmediğimiz için latest olarak tag'lendi fakat onu da yapabiliriz. isim verdikten sonra iki nokta üst üste koyup tag verebiliriz. $docker build -t bilisimio:1.0.0 . Successfully built 7c6de71592b1 Successfully tagged bilisimio:1.0.0 $docker images REPOSITORY TAG IMAGE ID CREATED SIZE bilisimio 1.0.0 7c6de71592b1 11 minutes ago 4.02MB bilisimio latest 7c6de71592b1 11 minutes ago 4.02MB <none> <none> 01fbb1867dbd 11 minutes ago 356MB #Artık çalıştırmaya hazırız. #docker run -it bilisimio:1.0.0 |
Çalıştırdığımızda aşağıdaki sonucu almamız gerekiyor. Boyut sınırına takıldığım için epeyce küçültmek zorunda kaldım 😀
Images
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$docker images #docker image'ları listeler $docker pull ubuntu #dockerhub üzerinden ubuntu image'ını indirir $docker image rm <image id> #her image bir id'ye sahiptir. bu id ile silebilirsiniz. $docker rmi -f <image_id> #bu komut da image silmek için kullanılır.(ReMove Image) $docker image prune -a #container bulunmayan bütün image'ları siler. $docker build . #Nokta(.) bulunduğunuz klasörü temsil ettiği için, klasördeki Dockerfile ile build işlemi yapar ve image oluştur $docker login #user_name ve password bilgisi ile login olmanızı sağlar $docker push <image_name:tag> #tag'lediğiniz image docker reposuna atmanızı sağlar. bunun için öncelikle login olmanız gerekir |
Containers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$docker container ls #container listesini verir $docker run -p 1907:8080 hello-world $docker container start <cid> #id'si verilen durdurulmuş container'ı çalıştırır $docker container stop <cid> #id'si verilen container'ı kapatır $docker container pause <cid> #id'si verilen container'ı durdurur $docker container unpause <cid> #id'si verilen container'ı devam ettirir $docker container inspect <cid> $docker container prune #durdurulmuş bütün container'ları siler $docker container kill <cid> #id'si verilen container'ı kapatır $docker container logs <cid> #id'si verilen container'ın log'unu verir $docker container logs --tail 10 <cid> #id'si verilen container'ın log'unun son 10 satırını verir |
Bu yazıyı oluştururken faydalanlandığım bir döküman oluşturduğu için takım arkadaşım Eren Çelik’e teşekkürler.
https://github.com/celikeren/docker-cheatsheet
Faydalı olması dileğiyle.