02.01.2024

0

Like

39

Views

Docker: Temel Kavramlar ve Pratik Kullanımı

Docker, yazılım geliştiricilerin uygulamaları hızlıca oluşturmalarını, test etmelerini ve dağıtmalarını sağlayan, container teknolojisini kullanan bir platformdur. Bu yazıda sizlere Docker’ı açıkladıktan sonra, sık kullanılan docker komutlarından bahsedeceğim.

Docker Nedir?

Docker, Linux Kernel’e 2008 yılında eklenen Linux Containers (LXC) üzerine kurulu bir teknolojidir. LXC, Linux’da aynı işletim sistemi içerisinde birbirinden izole olmuş bir biçimde çalışan Container’lar (Linux tabanlı sistemler) sağlamaktadır. LXC, işletim sistemi seviyesinde bir sanallaştırma (virtualization) altyapısı sunmaktadır. LXC 2008 yılında ortaya çıkmasına ve kendisine farklı alanlarda ciddi kullanım alanı bulmasına rağmen onu hak ettiği geniş kitlelerle buluşturan 2013 yılında ortaya çıkan Docker’dır.

Docker, yazılım geliştiricilerin ve sistem yöneticilerin yazılım uygulamalarını hızlı ve tutarlı bir şekilde çalıştırmalarını, dağıtmalarını ve yönetmelerini sağlayan bir platformdur. Docker, yazılımları kitaplıklar, sistem araçları, kod ve çalışma zamanı dahil olmak üzere yazılımların çalışması için gerekli her şeyi içeren container adlı standartlaştırılmış birimler halinde paketler ve uygulama geliştirme süreçlerini kolaylaştırır.

“Docker nedir?” ve “Neden docker kullanırız?” Bahsettiğimize göre şimdi de docker’ın temel yapılarından ve docker komutlarından bahsedelim.

Image

Docker imajı, bir uygulamanın veya servisin çalıştırılabilir durumdaki önceden yapılandırılmış versiyonudur. Bu imajlar, Docker container oluşturulması ve çalıştırılması için temel yapı taşlarını oluşturur. Bu imajlara Docker Hub sayesinde ulaşabiliriz.

Container

Docker container, bir uygulama veya hizmetin çalışabilir bir örneğidir. Container, Docker veya diğer container teknolojileri tarafından izole edilmiş, hafif, taşınabilir ve ölçeklenebilir bir şekilde paketlenmiş ortamlardır.

Her bir Docker container, bir imajdan oluşturulur. İmaj, uygulama veya servisin çalışabilir durumdaki yapılandırılmış versiyonudur. Container, bu imajın bir örneğini temsil eder ve bu imajdan bağımsız bir çalışma ortamı sağlar. Containerler, birçok işletim sistemi ve donanım üzerinde çalışabilirler ve kendi izole çalışma ortamlarına sahiptirler.

Docker Komutları

Öncelikle Docker’ın sayfasından işletim sistemimize uygun dosyayı indirip bilgisayarımıza kuruyoruz ve uygulamamızı açıyoruz. Sonrasında ihtiyacımıza uygun bir image seçmemiz gerekiyor. Bunun için Docker Hub sitesine gidiyoruz.

Arama çubuğuna ihtiyacımız olan imajı yazıyoruz.

Sonrasında gelen sayfada aramamızla eşleşen sonuçları görüyoruz.

İhtiyacımız olan imajı aşağıdaki gibi çağırıyoruz.

docker pull redis

Yukarıdaki komut imajın son versiyonunu getirmektedir. Ancak farklı bir versiyon istersek aşağıdaki gibi çağırabiliriz. Örneğin 7.0.14 çağıralım.

docker pull redis:7.0.14

Docker öncesinde localimizde bu imaj var mı kontrol etti ve sonrasında imajı indirmeye başladı.

Şu anda redis:7.0.14 imajına sahibiz. Şimdi bunu konteyner haline getirelim.

docker run -d redis:7.0.14

Öncelikle imajımızı container haline getirdik sonrasında da aşağıdaki komut ile çalışan konteynerlerimizi gösterdik.

docker ps

Durdurulan bir containeri başlatmak içinse start komutunu kullanabiliriz.

docker start 7b17d8344bde

Eğer ki durdurulmuş containerlara ulaşmak istersek aşağıdaki kodu kullanabiliriz.

docker ps -a

Bazı durumlarda options seçeneklerini kullanmamız gerekebilir. Options seçeneklerini ve docker komutlarını açıklamalarıyla birlikte görmek için aşağıdaki kodu kullanabiliriz.

docker help

Tek bir imajı container haline getirip çalıştırmak yukarıda bahsettiğim gibi. Peki birden fazla container çalıştırmamız gereken durumlarda napmamız gerekiyor?

Docker-Compose

Docker Compose, çoklu Docker containerlerini tek bir yapılandırma dosyası aracılığıyla yönetmeye yarayan bir araçtır. Bu yapılandırma dosyası, YML formatında yazılır ve uygulamanın farklı bileşenlerini (örneğin, web sunucusu, veritabanı, mikro servisler) tanımlar. Docker Compose, bu bileşenleri tek bir komutla oluşturmanıza, başlatmanıza, durdurmanıza ve yönetmenize olanak tanır. Ayrıca, birden çok ortamda (örneğin, geliştirme, test, üretim) aynı yapıyı kullanmanıza imkan sağlar.

version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: example

Kodlarımızı çalıştırmadan önce bu dizinde olduğumuza dikkat edelim.

cd docker_example

Sonrasında .yml dosyamızı ayağa kaldırmamız gerekiyor.

docker-compose -f docker-example.yml up -d
docker ps

Kapatmak için aşağıdaki kodu kullanıyoruz.

docker-compose -f docker-example.yml down

Tekrar açmak içinse aşağıdaki komutu kullanıyoruz.

docker-compose -f docker-example.yml up

Containerler docker host’u üzerinde herhangi bir durum bilgisi tutmadan çalışırlar ve container bir kez silinince içindeki her şey sonsuza dek kaybolur. Bu durumun olmaması için docker volume özelliği kullanılmaktadır.

Docker Volume

Docker volume, containerlerdeki verilerin depolanmasını sağlayan bir mekanizmadır. Bu, containerlerin ömrü boyunca depolanan verilerin kalıcı olmasını sağlar. Volume’lar, Docker containerlerin içinde oluşturulabilir ve daha sonra farklı containerler arasında paylaşılabilir.

Volume’yi isterseniz aşağıdaki gibi kullanabilirsiniz.

Docker-Compose ile kullanmak istersek ise aşağıdaki gibi .yml dosyamıza volume kısmını eklememiz gerekmektedir.

version: '3.8'

services:
web:
image: nginx:latest
ports:
- "8080:80"

db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db-data:/var/lib/mysql

volumes:
db-data:
driver: local

PostgreSQL Kurulumu

Yazımı bitirmeden önce örnek olması için bir PostgreSQL container’ı oluşturalım, ayağa kaldıralım ve başarılı bir şekilde bağlanıp PostgreSQL içerisinde sorgularımızı çalıştıralım.

Sonrasında .yml dosyamın bulunduğu dizine gidiyorum ve docker-compose -f Docker_PostgreSQL.yml up -dayağa kaldırıyorum.

Evet docker-compose ile PostgreSQL containerımızı ayağa kaldırdık. Şimdi sırada bu containera bağlanıp PostgreSQL’de birkaç işlem yapmak kaldı. docker exec -it (containerid/containername) /bin/bash

docker exec -it 086928be3f07 /bin/bash

PostgreSQL komut satırını kullanabilmek için bir adım daha kaldı. Son olarak .yml dosyamızda belirttiğimiz user, password ve database ismini kullanarak aşağıdaki kodu çalıştırıyoruz.(Şifreniz istenirse koddan sonra sizi yönlendirir.) psql -U user -d postgre

Bağlandığımız databasede var olan tabloları görmek için \dt komutunu kullanabiliriz.

Örnek bir tablo oluşturalım ve ekrana getirmeye çalışalım.

CREATE TABLE example_table (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INT
);
INSERT INTO example_table(name, age)
VALUES ('Cihan Erdoğan', 24);
INSERT INTO example_table(name, age)
VALUES ('Yaşar Furkan Karagöz', 25);
SELECT * FROM example_table;

Yukarıdaki komut satırında görmüş olduğunuz gibi sorgularımızın sonuna ; koymamız gerekiyor. Koymadığımız takdirde SQL sorgunun bitmediğini düşünüyor.

Son olarak SQL’den çıkış yapmak için \q yazıyoruz. Böylelikle tekrar container’ın içindeyiz. Container’dan çıkış yapmak içinse exit yazmamız gerekiyor.

Umarım bu rehber, Docker konusunda size yardımcı olmuştur. Herhangi bir sorunuz olması durumunda aşağıdaki linklerden bana ulaşabilirsiniz.

Linkedin

Github

Comments

You need to log in to be able to comment!

Cihan Erdoğan

Location

İzmir, TR

Education

Psikoloji - Adnan Menderes Üniversitesi

© 2021 Patika Dev

facebook
twitter
instagram
youtube
linkedin