Docker Serisi — Docker Image Yaratma

Ahmet Cokgungordu
3 min readJan 20, 2019

--

Son yazımda Dockerfile oluşturmayı anlatmıştım ve komutları satır satır incelemiştik. Kısaca özetleyecek olursak Dockerfile, Docker Image’ının nasıl oluşturulacağının anlatıldığı bir talimat listesiydi. Artık Dockerfiles bildiğimize göre, Bir Docker Image’ı oluşturabiliriz. Bir Docker Image’ını, bir VM snapshot olarak düşünebilirsiniz. Bir Image, belirli durumda olan bir Docker Container’ını başlatmak için Docker’ın ihtiyaç duyduğu her şeydir.

Öncelikle aşağıdaki gibi bir Dockerfile dosyamızın olduğunu varsayalım.

FROM ubuntu:16.04ADD ./runner.sh /scripts/runnerEntry.shCMD bash /scripts/runnerEntry.sh

runnerEntry.sh diye ufak bir çıktı üreten bir komut ekliyoruz.

echo "Hello Medium!!"

Bu sayede uygulama başladıktan sonra tetiklenecek ve ekrana “Hello Medium!!” yazacaktır.

Dockerfile dosyasının bulunduğu klasöre gidiyoruz ve aşağıdaki komutu çalıştırıyoruz.

docker build -t my-first-image .

Bu komut çalıştıktan sonra, ilk Docker Image’ınızı başarıyla oluşturmuş olacaksınız. Komutun çıktısı aşağıdaki gibidir.

Sending build context to Docker daemon  4.096kB
Step 1/3 : FROM ubuntu:16.04
16.04: Pulling from library/ubuntu
b849b56b69e7: Pull complete
42986ef25bcd: Pull complete
d927c1b717ec: Pull complete
15b86ea20233: Pull complete
Digest: sha256:b967b9f2a5625231a22db642609e61b7b1a5481128f51fe771e91bb92e0a35d0
Status: Downloaded newer image for ubuntu:16.04
---> b0ef3016420a
Step 2/3 : ADD ./runner.sh /scripts/runnerEntry.sh
---> a58ab9d465e5
Step 3/3 : CMD bash /scripts/runnerEntry.sh
---> Running in 00b60522c049
Removing intermediate container 00b60522c049
---> 3e79693e75dc
Successfully built 3e79693e75dc
Successfully tagged my-first-image:latest

Aslında her şey bu kadar basit. Aşağıdaki komutu çalıştırarak yeni Docker Image’ınız hakkında bilgileri görebilirsiniz.

docker images

Ve aşağıdaki bilgileri görmelisiniz

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-first-image latest 3e79693e75dc 33 seconds ago 117MB

Daha sonra aşağıdaki komut ile çalıştırıyoruz.

docker run my-first-image

DOCKER IMAGES Komutları

Docker Build

docker build [OPTIONS] PATH | URL | -

Dockerfile’ı kullanmak için Docker build komutu kullanılır, Docker Image için bir isim verilir ve Docker Image build edilir.

“my-first-image” Image’i oluştururken aşağıdaki komutu kullanmıştık.

docker build -t my-first-image .

Docker List Images

docker images [OPTIONS] [REPOSITORY[:TAG]]

Bu komut makinenizdeki Image’leri göstermek için kullanılmaktadır. Makinenizdeki kayıtlı tüm Image’leri görmek için aşağıdaki komutu çalıştırabilirsiniz.

docker images

Docker Tag

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Bir Docker Image’ına tag eklemek için bu komut kullanılır. Bu Docker Image Tag’i, Docker Image versiyonlarını ayırt etmeye yarar. Bu Tag’ler genellikle Image için kullanılan İşletim Sistemi ve kodun sürümünü içerir. Örneğin, official Node.js Docker Image’ı için kullanılan etiket aşağıdaki gibidir.

node:<node_version>-<operating_system>

Yukarıda oluşturduğumuz “my-first-image” Image’ine tag eklemek için aşağıdaki komutu çalıştırıyoruz.

docker tag my-first-image my-first-image:CUSTOM_TAG-ubuntu

Eğer aşağıdaki komutu tekrar çalıştırırsak;

docker images

Aşağıdaki gibi bir çıktı göreceğiz;

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-first-image CUSTOM_TAG-ubuntu 3e79693e75dc 21 hours ago 117MB

Bu çıktıda Repository ve Tag alanı bizim verdiğimiz gibi görünecektir.

Docker Login

Eğer bir DockerHub hesabınız yoksa buradan yeni hesap oluşturabilirsiniz.

docker login [OPTIONS] [SERVER]

DockerHub’a veya özel bir Docker Repository’sine giriş yapmak için kullanılmaktadır. “docker login” komutunu çalıştırdığımızda bizden kullanıcı adı ve şifre istemektedir. Giriş yaptıktan sonra başarılı bir şekilde bağlandığını göreceksiniz. Şimdi sıra Docker Image’ımızı DockerHub’a göndermeye geldi.

Docker Push

docker push [OPTIONS] NAME[:TAG]

Docker Push, bir Docker Image’ını giriş yapılmış Docker Repository’sine push etmek için kullanılır. DockerHub, varsayılan Docker Repository’sidir. Eğer farklı bir repository kullanmak isterseniz, Docker Image Tag’i içinde Docker Repository URL adresini ekleyebilirsiniz.

Docker Pull

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Docker Pull, Docker Repository’sinden bir Docker Image’ı çekmek için kullanılır. Farklı bir repository belirtilmediği sürece varsayılan repository DockerHub’dır.

Docker Image Silme

docker rmi [OPTIONS] IMAGE [IMAGE…]

Bu komut ile makinenizden bir veya daha fazla Image silmek için kullanılır.

--

--