Docker Nedir?

Docker Nedir?

Docker, uygulamaların farklı hedefler arasında sorunsuz bir şekilde taşınmasını sağlayan açık kaynaklı bir platformdur Bu makalede Docker nedir, nasıl çalışır ve avantajları nelerdir hakkında detaylı bilgi edinebilirsiniz

Docker Nedir?

Docker, yazılım uygulamalarının farklı platformlar ve sistemler arasında kolaylıkla taşınmasına izin veren açık kaynaklı bir konteyner platformudur. Docker, sanallaştırma teknolojileri içinde en popüler olanıdır. Docker, yazılım uygulamalarının herhangi bir cihazda çalışabilmesini sağlayan bir yapıdır. Konteynerler, bir uygulamanın çalışmasını sağlamak için gerekli her şeyi içeren bir sanal makine olarak düşünülebilir. Bu, bir yazılımın çalışması için ortamın hazır olması gerektiğinde, Docker'ın ortak kullanıma sunulan bir sistemi aracılığıyla ortamın kolayca taşınması anlamına gelir.

Docker, uygulamaların hızlı bir şekilde paketlenmesi ve dağıtılması için kullanılır. Docker konteynerleri, birden fazla uygulamanın aynı cihazda çalışmasına izin verir ve aynı zamanda uygulamaların farklı sistemler arasında kolayca taşınmasına izin verir. Docker, bir uygulamanın sunucusu, bilgi işlem ortamı ve bileşenleri gibi çalıştığı sistemlerin her birini bir konteyner içinde sunabilir. Bu şekilde uygulama, bir aygıttan diğerine taşınabilir, aynı zamanda yapılandırmadaki herhangi bir değişikliğin üzerinden geçilmesine gerek kalmadan çalışabilir. Docker, uygulamaların daha iyi bir yük dengelemesi için hızlı ve otomatik olarak konuşlandırılmasını sağlar, bu nedenle sistem yöneticileri tarafından da yaygın olarak kullanılmaktadır.


Docker Kurulumu

Docker, yazılım uygulamalarını, sistemlerini ve kaynak kodlarını bütünleştiren açık kaynak bir projedir. Birçok işletim sistemi ve platformu destekler. Bu nedenle, hem yazılım geliştiricileri hem de sistem yöneticileri tarafından aktif olarak kullanılır.

Docker'ın kurulumu oldukça kolaydır. İlk olarak, işletim sisteminiz için Docker'ın uyumlu sürümünü indirmeniz gerekiyor. Daha sonra, kurulum sihirbazını başlatarak kurulum adımlarını izleyebilirsiniz.

Bununla birlikte, Docker kurulumundan önce sanal makine yazılımınızın kurulu olması gerekebilir. Örneğin, Windows 7 kullanıyorsanız, “Docker Desktop” kurulumu yapmak için sanal makine yazılımının kurulu olması gereklidir.

Docker'ı yüklemeden önce, Docker Coomunity Edition'ın tüm dosyalarını ve bellek gereksinimlerini kontrol etmeniz önerilir.

Docker'ın kurulumundan sonra, basit bir test yapabilirsiniz. Sisteminizdeki terminali açın ve aşağıdaki komutları sırayla girin:

  • docker version
  • docker info
  • docker run hello-world

Bu komutları girerek, Docker'ın doğru bir şekilde kurulup kurulmadığını, ayrıca kurulduktan sonra sistemde çalışıp çalışmadığını test edebilirsiniz.


Docker İle Konteyner Oluşturma

Docker ile konteyner oluşturma işlemi oldukça basittir ve birçok farklı programlama dili, çerçeve ve teknoloji ile uyumlu çalışır. Bu sebeple, Flask ve Python kullanarak bir web uygulaması oluşturma örneği verebiliriz.

İlk olarak, Python Flask ile basit bir web uygulaması oluşturmamız gerekir. Bunun için, Flask'ın kurulması ve gerekli kütüphanelerin yüklenmesi gerekiyor. Ardından, uygulama kodumuzu oluşturuyoruz. Bu adımları tamamladıktan sonra, Dockerfile dosyası oluşturmak için Flask uygulamasını Docker konteynerinde çalıştırmamız gerekiyor.

Dockerfile dosyası, konteynerin hangi bileşenlerden oluşacağına dair talimatlar içerir. Bu dosyada, uygulamanın hangi portlarda çalışacağı, hangi kütüphanelere ihtiyaç duyulacağı ve nasıl çalışacağı gibi talimatlar yer alır. Dockerfile dosyasını tamamladıktan sonra, bir docker-compose dosyası oluşturuyoruz.

Docker Compose, Docker konteynerlerinde birden çok servisi aynı anda çalıştırmamızı sağlayan bir araçtır. Bu dosyada, Flask uygulamamızın Docker konteynerinde nasıl çalışacağı ve diğer servislerle nasıl etkileşime gireceği belirtilmelidir.

Son adımda, uygulamamız Docker konteynerinde başarıyla çalıştırıldığında, Docker Hub'a yüklenmek için hazır hale gelir. Burada, uygulamayı paylaşmak ve diğer kullanıcıların erişimine açmak için Docker hub'a yükleyebiliriz.


Flask Uygulaması Oluşturma

Flask, Python için açık kaynaklı bir web çerçevesidir ve hızlı bir şekilde web uygulamaları oluşturmanıza izin verir. Bir Flask uygulaması oluşturmak için öncelikle bir Python ortamının kurulu olması gerekir.

Uygulama oluşturmak için öncelikle Flask'ın kurulması gereklidir. Flask, pip aracılığıyla kolayca yüklenir. İlgili komut terminal üzerinde aşağıda belirtilmiştir;

```pip install flask```

Flask kurulduktan sonra Python betiği oluşturulabilir, uygulama kodu yazılabilir ve sunucu çalıştırılabilir. Örnek olarak, aşağıdaki kod Flask kullanarak "Merhaba Dünya" yazdıran bir web uygulaması oluşturur:

```from flask import Flask

app = Flask(__name__)

@app.route('/')def hello_world(): return 'Merhaba, Dünya!'

if __name__ == '__main__': app.run()```

Yukarıdaki kod Python betiği olarak kaydedilebilir ve terminalde aşağıdaki komut çalıştırılarak sunucu başlatılabilir:

```python hello.py```

İlk önce tarayıcıda ```http://localhost:5000``` web adresine gidilerek Flask uygulamanın çalıştığını test edebilirsiniz.

Flask uygulaması yazmak için temel router'lardan da bahsedebiliriz. Aşağıda `about` & `contact` sayfaları için temel Flask router örneği verilmiştir;

```from flask import Flask

app = Flask(__name__)

@app.route("/")def index(): return "Merhaba, Dünya!"

@app.route("/about")def about(): return "Hakkımızda sayfası"

@app.route("/contact")def contact(): return "İletişim sayfası"

if __name__ == "__main__": app.run(debug=True)```

Yukarıdaki Flask kodu, root url, about ve contact url'leri oluşturur ve tarayıcıda ```http://localhost:5000/about``` ve ```http://localhost:5000/contact`` gösterimlerini sağlar.

Flask uygulamaları oldukça esnek ve özelleştirilebilir olduğundan, geliştirme ortamınıza özgü web uygulamalarının geliştirilmesine kadar uygun bir yapıdadır.


Gerekli Kütüphanelerin Yüklenmesi

Flask uygulamasını çalıştırmak için gerekli olan Python kütüphanelerini yüklemek oldukça kolay ve hızlı bir işlemdir. Gerekli kütüphaneler aşağıdaki adımlar takip edilerek yüklenir:

  • İlk olarak Python'un resmi web sitesinden son sürüm Python sürümünün indirilmesi gereklidir.
  • Ardından, komut isteminde aşağıdaki komut kullanılarak Flask ve diğer gerekli Python kütüphaneleri yüklenir:
Komut Açıklama
pip install flask Flask kütüphanesini yükler
pip install pandas Pandas kütüphanesini yükler
pip install numpy Numpy kütüphanesini yükler
pip install requests HTTP istekleri yapmak için requests kütüphanesini yükler

Docker kullanımı için Flask uygulamasının haricinde farklı Python kütüphaneleri de yüklenebilir. Yükleme işlemi tamamlandığında Flask uygulaması Docker konteynerinde kullanılmaya hazırdır.


Uygulama Kodunun Oluşturulması

Web uygulamasının Docker konteynerinde çalışması için uygulama kodunun Python ve Flask kullanılarak yazılması gerekir. Uygulama, Flask uygulama çerçevesi kullanılarak oluşturulabilir.

İlk adım, Flask'ın yüklendiğinden emin olmaktır. Flask'ın yüklü olduğundan emin olmak için pip kullanarak sitelerinizi güncelleyin ve Flask'ı yükleyin.

Bir sonraki adım, Flask kullanarak basit bir web uygulaması için bir dosya oluşturmak olacaktır. Aşağıdaki örnek, "app.py" adında bir dosya oluşturur:

from flask import Flaskapp = Flask(__name__)@app.route('/')def home():    return 'Hello, Flask!'if __name__ == '__main__':    app.run(debug=True, host='0.0.0.0')

Üstteki kod blogu, Flask uygulama objesini oluşturur ve ardından "/", yani ana sayfa erişimi tanımlar. Açıklandığı gibi, burada ana sayfa basit bir "Merhaba, Flask!" yazısı yazacaktır.

Bu örnek web uygulaması, ana sayfayı görüntüleyebilmenizi sağlar.

Bu aşamada web uygulamasının hazır olduğundan emin olun. Komut satırından "python app.py" komutunu kullanarak uygulamayı test edebilirsiniz. Tarayıcınızda "localhost:5000" adresine gidin, "Merhaba, Flask!" mesajının gösterilmesi gerektiğinden emin olun.


Dockerfile Dosyası Oluşturma

Dockerfile Dosyası Oluşturma

Docker konteynerinde çalıştırmak istediğimiz uygulamanın Dockerfile dosyasını oluşturmak için izlenmesi gereken adımlar vardır. Dockerfile, bir Docker konteyneri için oluşturulacak ve içindeki tüm bileşenleri belirleyecektir. Dockerfile, birçok parametreyi destekleyen bir dosya formatına sahiptir ve genellikle birden fazla komut içerir. Bu adımları takip ederek, bir Dockerfile dosyasına Flask uygulamasını ekleyebiliriz.

İlk olarak, bir Flask uygulaması için gereken tüm bileşenlerin (örneğin, Python ve Flask) Docker imajı içinde olması gerektiğinden emin olmalısınız. Docker, FROM komutu aracılığıyla bir temel olarak kullanılacak imajı alabilir. Dockerfile'inizin başlangıcına şunları ekleyin:

# Base ImageFROM python:3.9-buster

Flask uygulamasının çalışması için requiremnts.txt dosyasından yararlanabiliriz. Bu dosya, projekte kullanılan kütüphanelerin listesidir ve uygulamanızın düzgün bir şekilde çalışması için gereklidir. Örnek bir requirements.txt dosyası şöyle görünebilir:

Flask==1.1.2 jinja2==2.11.3 redis==3.5.3

Dockerfile'imizde bu kod şu şekilde olacaktır:

COPY ./requirements.txt /app/requirements.txtRUN pip install --no-cache-dir -r /app/requirements.txt

Bir sonraki adım, Flask uygulamasını Docker imajımıza eklemektir. Uygulamayı konteynerimize kopyalamadan önce, Dockerfile üzerinden belirtilen bir dizin oluşturmalısınız. Bu dizin sizin uygulamanızın çalıştığı yer olacaktır. Dockerfile'inizin sonuna şunları ekleyin:

WORKDIR /appCOPY . /app

Bu komutların ardından, Dockerfile'ınızı kaydedebilirsiniz. Bu dosyayı kullanarak bir Docker imajı oluşturabilir ve konteynerlerinizi göndermeden önce imajı test edebilirsiniz.


Docker-compose Dosyası Oluşturma

Docker-compose, birden fazla Docker konteynerini yönetmek için kullanılır. Bu, birden fazla Docker imajının ve konteynerin çalıştırılmasını kolaylaştırır. Docker-compose dosyası, bir Docker dosyasından farklı olarak, birden fazla konteyneri içerebilir ve gerektiğinde sırayla çalıştırabilir.

Docker-compose dosyası, web uygulaması için yapılandırılmış bir Docker dosyasının yüklenmesinde önemlidir. Docker-compose dosyası, konteynerlerin kaynağını tanımlayan bir YAML dosyasıdır. Dosya, uygulama özelliklerini belirtir, gereksinimleri tanımlar ve başka bir arayüz sağlar.

Docker-compose dosyası oluşturmak için öncelikle bir YAML dosyası oluşturmanız gerekir. Docker-compose dosyası, anahtar ve ad değerlerine sahip YAML türünde bir dosyadır. Bu dosyanın içeriği web uygulamasının ihtiyacına göre ayarlanmalıdır. Daha sonra, bu dosya Docker-compose komut dosyasında kullanılmak üzere tanımlanmalıdır.

İşte, bir Docker-compose dosyası oluşturmak için örnek YAML dosyası:

```version: "3.9"services: web: build: . ports: - "5000:5000" volumes: - .:/code environment: FLASK_ENV: development redis: image: "redis:alpine"```

Bu YAML dosyası, iki servis adı altında iki ayrı konteyner oluşturur: web ve redis. Web konteyneri, Dockerfile'dan yapılandırılır. Ayrıca, konteyner bir Flask uygulaması olan 5000 numaralı bir bağlantı noktası kullanır. Dosya ardından, küçük bir Redis veritabanı konteyneri tanımlar.

Sonuç olarak, Docker-compose dosyası, birden fazla Docker imajını ve konteyneri yönetmekle ilgilenenler için mükemmel bir çözümdür. Docker-compose dosyasının oluşturulması, uygulama özelliklerinin belirlenmesinde ve kaynakların kullanımında kolaylık sağlar.


Uygulamanın Docker Konteynerinde Çalıştırılması

Docker, günümüz teknoloji dünyasında oldukça yaygın bir şekilde kullanılmaktadır. Bu teknolojinin kullanımı, uygulamaların daha hızlı bir şekilde geliştirilmesine ve dağıtılmasına olanak tanımaktadır. Peki, uygulamanızı oluşturduktan sonra Docker konteynerinde nasıl çalıştırabilirsiniz?

Uygulamanızı Docker konteynerinde çalıştırmak için öncelikle Docker Desktop gibi bir Docker yazılımı kurmanız gerekmektedir. Ardından, uygulamanızın bulunduğu dizinde bir Docker imajı oluşturmanız gerekmektedir.

Bunun için terminal veya komut istemi üzerinden docker build . -t uygulama-adi: komutunu kullanarak Docker imajınızı oluşturabilirsiniz. Docker imajınızın oluşturulduğundan emin olmak için docker images komutunu kullanabilirsiniz.

Olumsuz olasılıkları önlemek için, Docker imajınızı bir Docker konteynerinde test edebilirsiniz. Bunun için, docker run -p port-numarası:port-numarası uygulama-adi: komutunu kullanarak Docker konteynerinde uygulamanızı çalıştırabilirsiniz.

Bu adımların tamamlanmasının ardından, uygulamanızın Docker konteynerinde başarıyla çalıştığını göreceksiniz. Artık, uygulamanızı Docker konteynerinde istediğiniz zaman kullanabilirsiniz.


Docker Hub'a Yüklenmesi

Docker konteyneri oluşturduktan ve test ettikten sonra, paylaşıma hazır hale getirmek için Docker Hub'a yüklemek gerekmektedir. Docker Hub, Docker konteynerlerinin beş yıldızlı bir topluluk puanlama sistemine sahip olduğu, açık kaynaklı bir konteyner deposudur.

Docker Hub'a yüklemek için öncelikle bir hesap oluşturmanız gerekmektedir. Hesabınız oluştuktan sonra, oluşturduğunuz konteyneri Docker Hub'a yüklemek için docker push komutunu kullanarak Docker Hub'a yükleyebilirsiniz.

Bunun için öncelikle, Docker konteyner adını değiştirerek Docker Hub'da oluşturduğunuz bir kullanıcı adı altında depolayın. docker tag komutunu kullanarak Docker Hub kullanıcı adınızı ve oluşturduğunuz Docker konteyner adını köşeli parantez içinde belirterek, yeni bir Docker imajı oluşturabilirsiniz.

```docker tag [image name] [dockerhub username]/[image name]```

Docker konteyneri sonunda Docker Hub'a yüklemek için docker push komutunu kullanarak Docker Hub hesabınıza yeni Docker konteyneri imajını yükleyebilirsiniz.

```docker push [dockerhub username]/[image name]```

Docker Hub hesabınızda yeni bir repo oluşturmak isterseniz, yine Docker Hub web sitesinde "Create Repository" düğmesine tıklayarak oluşturabilirsiniz. Bu repo'ya yüklediğiniz Docker konteynerleri, başka kullanıcılar tarafından indirilebilir ve kullanılabilir hale gelecektir.

Sonuç olarak, Docker Hub'ın güçlü topluluğu sayesinde, oluşturduğunuz Docker konteynerlerinin geniş bir kullanıcı topluluğu tarafından keşfedilmesi ve dağıtılması kolaylaşır. Böylece, Docker ile web uygulamaları oluşturarak kolayca kullanılabilir, paylaşılabilir ve dağıtılabilir hale gelebilirsiniz.