Bir süredir Docker ile haşır neşir oluyorum. Bulutfon’da geliştirme süreçleri üzerinde değişik yöntemler deniyoruz. Herkes gibi benim de çok duyduğum Docker teknolojisini test etme imkanı buldum. Bu süreçte tecrübe edip not ettiklerimi bir seri halinde anlatacağım.

Öncelikle şunu belirtmem lazım. Yazının başlığını seçmek için yarım saat harcadım. Docker için Türkçe bir başlık nasıl bulurum diye. Teknolojiyi biz geliştirmediğimiz için maalesef Türkçe terim sıkıntısı yaşıyoruz. Tam karşılığı olduğuna emin değilim ama “uygulama sanallaştırma” terimi Docker’ın yaptığı işi anlatmaya yetiyor bence. Camiada kabul görmüş başka bir terim varsa lütfen bana yazın.

Docker_(container_engine)_logo

Docker nedir?

Docker, Linux ile yıllardır elimizde olan bir çok aracı bir araya getirerek, uygulamaları her platformda çalışabilecek şekilde paketleyen bir sistemdir. Oluşturacağınız bir Docker konteyner, herhangi farklı bir sistemde, her zaman beklenilen şekilde çalışır. Bu şekilde uygulamalarınızı standartlaştırarak dağıtabilirsiniz. Böylelikle “Centos’da derleyemedim, Ubuntu’da bunun paketi yok” gibi konular tarih olur. Geliştiriciler için, laptop’unuzda ne çalışıyorsa, test ortamında da, üretim ortamında da aynı şekilde çalışacağını garanti edebilirsiniz.

Docker sistemi bir kaç parçadan oluşur.

  • Docker servisi :  Sadece konteynerlerin ayarlarını yapar, çalışma zamanı verilerini toplayar. Sanallaştırma yazılımı değildir. Restful bir API ye sahiptir.
  • Docker istemcisi : Aynı makinada, ya da farklı bir makinada çalışan, Docker servisine Restful API ile bağlanarak sistemi yönetmemizi sağlayan bir araçtır.
  • Docker imajları: Üzerine yazılımlarınızı yüklediğiniz, isterseniz kendinize istediğiniz şekilde oluşturabildiğiniz, portatif sistem imajlarıdır.
  • Docker Registry: Docker imajlarınızı depoladığınız, push-pull işlemlerini yaptığınız depodur. İsterseniz Docker’ın sağladığı https://hub.docker.com/ ‘u kullanabilrisiniz, ya da kendiniz bir özel registry kurabilirsiniz. Tahmin edebileceğiniz üzere registry yazılımı da açık kaynak koddur. https://github.com/docker/docker-registry
  • Docker Konteyner: Bir docker imajı üzerinde koştuğunuz bir dizi komutun, sistemdeki diğer tüm servislerden izole çalıştığı, sanal ortamdır. Sanal sunucu olarak düşünebilirsiniz.

Teknik olarak bakarsak, biraz önce belirttiğim gibi Docker bilinen öğeleri kullanıyor. Yıllardır bilinen ve kullanılan lxc konteynerleri, cgroups, aufs, copy-on-write dosya sistemleri, ve daha bir çoğu. Belki de camiada bu kadar hızlı kabul görmelerinin bir nedeni de, tekerleği yeniden icat etmemeleridir.

Docker kurulumu

Kurulum oldukça basit. Yum ve apt ile kolayca kurabildiğimiz gibi kurulum scripti de var. Kurulumdan önce kernel versiyonunun 3.8 ve sonrası olmasına dikkat etmeniz gerekli. Ben Centos7 ile test ediyorum. Aşağıdaki şekilde kurulumu yaptım ve servisi çalıştırdım.

yum install docker
systemctl start docker.service

Docker ile merhaba dünya

Bu tip tanıtım yazılıarnın olmaz ise olmazı bir “Merhaba Dünya” ile ilk bölümü bitirelim.

[root@localhost ~]# docker run centos /usr/bin/echo "Merhaba Dünya"
Unable to find image 'centos' locally
Pulling repository centos
b157b77b1a65: Download complete
511136ea3c5a: Download complete
34e94e67e63a: Download complete
Merhaba Dünya

Burada ne oldu? Docker istemcisi ile servise centos imajı üzerinde bir konteyner çalıştırmasını istedik. Çalışan konteynera da /usr/bin/echo “Merhaba Dünya” argümanını verdik. Konteyner oluşturuldu, komut çalıştırıldı ve konteyner durdu. Anlamsız görünen bu iş için arkada docker servisi elinde olmayan centos imajını önce Docker Hub dan çekti. Ardından bu imajı kullanarak bir konteyner çalıştırdı ve verdiğimiz argümanı çalıştırdı. Argümanda verilen komut durduğu için konteyner durdu.

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
0397c25cb4ce        centos:latest       /usr/bin/echo 'Merha   7 seconds ago       Exited (0) 6 seconds ago                       sad_wright3

Docker ps ile kontrol edersek şu anda elimizde “sad_wright3” adında durmuş bir Docker konteyneri olduğunu görebiliriz.

Docker ile uygulama sanallaştırma – I Giriş

3 thoughts on “Docker ile uygulama sanallaştırma – I Giriş

  • 26 December 2014 at 16:23
    Permalink

    Bence basit ve güzel anlatım olmuş aslında detaylı bir döküman hazırlarsak iyi olabilir kendi sayfamda paylaşmak isterim müsadeniz varsa ..

    Reply
    • 2 January 2015 at 11:58
      Permalink

      Bilerek basit tutmak istedim. Kavramsal olarak birşeyler verebilmek amacım. Paylaşabilirsiniz tabi.

      Reply
  • 10 June 2015 at 20:30
    Permalink

    Güzel bir yazı olmuş, inşallah devamı gelir merakla bekliyoruz 🙂

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *