02.01.2024
0
Like
39
Views
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, 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.
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.
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.
Ö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, ç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, 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
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 -d
ayağ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.
You need to log in to be able to comment!