Uygulama ve Web geliştirme alanında son zamanlarda ‘container’ terimine çok fazla rastlamaya başlanıldı. Container kullanım alanları değişmektedir. Örnek olarak uygulamınızı izole bir network üzerinde çalıştırabilirsiniz bu sayede kullandığınız IP bloğunu kullanmadan bağımsız bir IP bloğu ile çalıştırabilirsiniz yada başka bir ortamda çalıştırmak üzere image haline getirebilirsiniz.

Docker, bunlar arasında en çok kullanılan çözümlerdendir. Bu yüzden container kelimesi docker ile özdeşleşmiş olup ‘Docker Container’ olarak tabir edilir. Halbuki ikisi birbirinden farklı terimlerdir.

Docker Nedir ?

Docker, containerlar kullanarak uygulamaları oluşturmayı, dağıtmayı ve çalıştırmayı kolaylaştırmak için tasarlanmış bir araçtır. Containerlar, bir developer’ın bir uygulamayı, library veya diğer bağımlılıklar gibi ihtiyaç duyulan tüm parçalarla paketlemesine ve tek bir paket olarak dağıtmasına olanak tanır. Bunu yaparak, container sayesinde, developer, uygulamanın, kodu yazmak ve test etmek için kullanılan makineden farklı olabilecek özelleştirilmiş ayarlara bakılmaksızın, uygulamanın başka bir Linux makinede çalışacağından emin olabilir.

Docker Nasıl Kurulur ?

Bu yazıda docker Linux bir makineye nasıl kurulur ondan bahsedilecektir. Linux olarak Centos 7 tercih edilmiştir. Kurulumdan önce makine üzerinde herhangi bir engelleme ile karşılaşmamak için firewall ve selinux disable edilir.

Sistem paketlerinizi ve docker bağımlılıklarınızı güncelleyerek başlayın

$ sudo yum update -y $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Sisteminizdeki centos için docker stabil repository ekliyoruz.

$ sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

Docker deposu etkinleştirildikten sonra Docker-CE’yi (Community Edition) kuruyoruz.

$ sudo yum install docker-ce

Docker uygulamasını başlatmadan önce kendi network umuz ile çakışmaması için öncelikli olarak bir subnet belirlememiz gerekiyor. Yoksa makineye erişeme etc. gibi durumlarla karşılaşabiliriz. /etc/docker directory altına ‘daemon.json’ dosyasını manuel oluşturuyoruz

$ sudo vi daemon.json

Örnek olarak aşağıdaki şekilde oluşturabilirz. Subnet olarak kendi network unuz ile çakışmayacak bir subnet belirlemeniz gerekiyor.

{
“default-address-pools”:
[
{“base”:”10.10.0.0/16″,”size”:24}
]
}

Sonrasında makine reboot olduktan sonra servisin otomatik olarak start olması için aşağıdaki komutu yazıyoruz.

$ sudo systemctl enable docker

Artık docker start edebiliriz.

$ sudo systemctl start docker

Aşağıdaki komut ile docker durumunu görebiliriz.

$ sudo systemctl status docker

Docker Servis Durumu

Docker servisi çalışır ve kullanılabilir durumdadır.

Aşağıdaki komutla docker versiyonu kontrol edebiliriz.

$ sudo docker -v

Docker Container Nedir ?

Yazıyı okumaya devam ediyorsanız Docker Container ler ile ilgili merakınız hiç şüphesiz ortaya çıkmıştır. Yukarıda kısmen açıklandığı gibi bir Docker Container, kodu ve tüm bağımlılıklarını depolayan standart bir yazılım birimidir, böylece uygulama bir bilgi işlem ortamından farklı ortamlara hızlı ve güvenilir bir şekilde çalışır. Docker Container Image, bir uygulama kodu, çalışma zamanı, sistem araçları, sistem kitaplıkları ve ayarları çalıştırmak için ihtiyacınız olan her şeye sahip, hafif, bağımsız, yürütülebilir bir yazılım paketidir.

Container oluşturmadan önce tercihen docker-compose kurulabilir.

Docker Compose nedir ?

Docker Compose’u anlamak için, örnek olarak bir e-commerce sitesini inceleyebiliriz. E-commerce web sitelerinde web browser aracılığıyla ziyaret eder ve hesabınıza giriş yapmak, bir kataloğa göz atmak, kontrol etmek vb. Gibi çeşitli etkinliklerden geçersiniz. Bu etkinliklerin veya hizmetlerin her birinin arkasında, bir hesap veritabanı, ürün veritabanı, alışveriş sepeti veritabanı ve perde arkasında çalışan diğerleri gibi farklı ürünler vardır.Bunların her biri bir mikro hizmet olarak kabul edilebilir. Ortamınıza ne kadar çok mikro hizmet eklerseniz, bu hizmetlerin her birinin containerlarda bulunması o kadar değerlidir. Ancak bir developer olarak, bir containerdan diğerine atlayabilmelisiniz. Bu örneği Docker ile ilişkilendirebileceğiniz yer burasıdır, burada Docker Compose farklı containerları tek bir hizmet olarak bağlayabilir.

Şimdi bir docker compose kurabiliriz. Önceklikli olarak hazırlanmış dosyaları github üzerinden alıyoruz.

$ sudo curl -L “https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose

Aşağıdaki komutla ihtiyaç olan yetkileri veriyoruz.

$ sudo chmod +x /usr/local/bin/docker-compose


Ve şimdi, yardımcı programı terminalde kullanırken herhangi bir sorun olmadığından emin olmak için, sisteme sembolik bir bağlantı yapmamız gerekecektir.

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Son olarak, kurulu sürümü aşağıdaki şekilde kontrol edebiliriz.

$ sudo docker-compose –version

Docker Nasıl Kullanılır ?

Docker üzerinde image nasıl oluşturulur ona değinilicektir sonrasında container oluşutmak ve çalıştırmak hakkında bilgi verilecektir.

Var olan docker image leri aşağıdaki şekilde görebiliriz.

$ sudo docker images

Docker image oluşturmadan önce hangi web server kullanılıcaksa onun kurulumunu yapıyoruz. Bu yazıda nginx tercih edilmiştir. Centos 7 repository lerde nginx olmadığı için epel repository ekliyoruz. Nginx kurup, enable edip sonrasında start ediyoruz.

$ sudo yum install -y epel-release
$ sudo yum install nginx
$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Örnek olarak bir imaj oluşturulacaktır. İlk önce bir directory tanımlıyoruz.

$ sudo mkdir /test

Sonrasında directory üzerindebasit bir .html sayfası create ediyoruz.

$ sudo vi /test/index.html

Örnek HTML file

Sonra DockerFile create ediyoruz.

$ sudo vi /test/Dockerfile

from nginx:alpine
copy . /usr/share/nginx/html
expose 80

Aşağıdaki şekilde image build edip istediğimiz platformda çalıştırabiliriz.

$ sudo docker build . -t test

Basit bir komutla bir container aşağıdaki şekilde run edilir. Komut öncelikli olarak bir image olup olmadığını kontrol eder. Eğer sistemde yoksa image üzerinde çekilir ve run edilir. Komut çalıştırıldığında “Hello from Docker!” yazısı görünecektir.

$ sudodocker run hello-world

Docker Compose ile örnek bir container oluşturulacaktır. Öncelikli olarak ‘docker-compose.yml’ dosyamızı oluşturuyoruz

$ sudo vi docker-compose.yml

Örnek Docker Compose Yml Dosyası

Aşağıdaki komutla birlikte docker-compose çalıştırabiliyoruz ve docker bütün komutlarını kullanabiliriz.

$ sudo docker-compose up

Sonrasında .yml dosyasında oluşturduğumuz portlardan uygulamaya erişim sağlayabiliriz.

Aşağıdaki komutla çalışan compose ları görebiliriz

$ sudo docker-compose ps

Aşağıdaki komutla logları görebiliriz.

$ sudo docker-compose logs


2 yorum

muziii · 1 Mart 2021 09:05 tarihinde

süper bir paylaşım başarılarının devamını ssseverek bekliyoruz.:)

Kubernetes(K8s) Nedir ? Local K8s Laboratuvar’ınızı Oluşturun – Muhammet Emin KAMİLOĞLU | System and Network Administrator · 13 Mart 2021 00:26 tarihinde

[…] olarak bütün makinelerde docker kuruyoruz. Docker ile ilgili bilgiler içim bu yazıyı okumanızı tavsiye […]

Bir yanıt yazın

Avatar yer tutucu

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir