MariaDB’nin Docker kapsayıcısı olarak nasıl kurulup çalıştırılacağına ilişkin temel eğitimimize hoş geldiniz. Docker web sitesine göre “Docker, uygulamaları geliştirmek, göndermek ve çalıştırmak için açık bir platformdur”. Eldeki bir konteyner, uygulamanın bir bilgi işlem ortamından diğerine hızlı ve güvenilir bir şekilde çalışmasını sağlayacak şekilde kodu ve tüm bağımlılıklarını paketleyen standart bir yazılım birimidir. Docker kapsayıcı görüntüsü, bir uygulamayı çalıştırmak için gereken her şeyi içeren hafif, bağımsız, yürütülebilir bir yazılım paketidir: kod, çalışma zamanı, sistem araçları, sistem kitaplıkları ve ayarlar”.
MariaDB’yi Docker Container olarak kurma
Docker Engine’i yükleyin
Devam etmeden önce sisteminize Docker Engine’i yükleyin.
MariaDB Docker Görüntüsünü İndirin
Her liman işçisi konteyneri belirli bir görüntüyü temel alır. Docker görüntüsü, bir kapsayıcıyı çalıştırmak için gereken her şeyi içerir ve dolayısıyla bir uygulamanın nasıl çalıştırılacağını tanımlayan bir dizi talimattır.
Kendi Docker görüntünüzü oluşturabilir veya topluluğun oluşturduğu görüntüleri kullanabilirsiniz. Görüntüleri Docker Hub’da bulabilirsiniz.
Bu eğitimde, topluluğun mevcut Docker görüntülerini kullanacağız.
MariaDB Docker Görüntüsünü arayın
Öncelikle, belirli MariaDB Docker Görüntüsünün adını tanımlamanız gerekir. Docker hub’ında görseli aramak için aşağıdaki komutu çalıştırmanız yeterlidir;
docker search mariadb
Oluşturulmuş bir ton MariaDB görüntüsü alacaksınız;
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mariadb MariaDB is a community-developed fork of MyS… 3572 [OK]
linuxserver/mariadb A Mariadb container, brought to you by Linux… 151
bitnami/mariadb Bitnami MariaDB Docker Image 120 [OK]
toughiq/mariadb-cluster Dockerized Automated MariaDB Galera Cluster … 41 [OK]
...
Genellikle öneki olmayan bir görüntü, resmi liman işçisi hub görüntüsü, kararlı ve bakımı yapılan bir görüntü olarak kabul edilir. Ayrıca Resmi sütununda [Tamam] bulunur. Bu nedenle yukarıdaki listeden ilk görseli çekeceğiz.
Docker Hub’dan MariaDB Docker Görüntüsünü İndirin
Docker Görüntüsünü indirmek için docker pull <görüntünün adı> komutunu kullanırsınız. Bu durumda imaj adımız mariadb olur.
docker pull mariadb
Komut, halihazırda mevcut değilse görüntüyü sisteminize indirir.
Varsayılan olarak, bir docker görüntüsünü aldığınızda bunun en son sürümü indirilir. MariaDB Docker Images’ın diğer sürümlerini (örneğin, MariaDB 10.3 Docker Image) indirmeniz gerekiyorsa şu komutu kullanmanız yeterlidir;
docker pull mariadb:10.3
Docker Hub MariaDB sayfasında kullanabileceğiniz çok çeşitli etiketleri görebilirsiniz.
İndirilen Docker Görüntülerini Listeleme
Docker Images komutunu kullanarak yerel olarak mevcut görselleri listeleyebilirsiniz.
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest 8075b7694a2d 8 days ago 407MB
En son MariaDB Docker Image’ı indirdik.
MariaDB Docker Container’ı Çalıştırma
Docker imajını yerleştirdikten sonra imaja dayalı bir docker konteyneri oluşturup çalıştırabilirsiniz. docker run <options> <image-name>, Docker kapsayıcılarını çalıştırmak için kullanılan Docker komutudur.
Bir MariaDB kapsayıcısını çalıştırırken aşağıdaki ortam değişkenlerinden birini belirtmeniz gerekir:
MYSQL_ROOT_PASSWORD
: MariaDB kökü için ayarlanacak şifreyi belirtir (zorunlu).MYSQL_ALLOW_EMPTY_PASSWORD
: MariaDB kök kullanıcı hesabı için boş bir parola belirler (isteğe bağlı). Değerleri alır, evet veya hayırMYSQL_RANDOM_ROOT_PASSWORD
: MariaDB kök kullanıcı hesabı için rastgele bir parola ayarlar (isteğe bağlı). Değerleri alır, evet veya hayır
Buradaki durumumuzda görselin adı mariadb’dir (en sonuncusu etikettir);
docker run --name mariadbdemo -e MYSQL_ROOT_PASSWORD=password -d mariadb
Yukarıdaki komut temel olarak mevcut en son görüntü sürümüne göre MariaDB Docker kapsayıcısını oluşturur ve çalıştırır (arka planda, -d), MariaDB veritabanı kök parolasını parolaya (-e MYSQL_ROOT_PASSWORD=parola) ve kabın adını mariadbdemo olarak ayarlar. (–name mariadbdemo, adı belirtmezseniz genellikle kaplar için rastgele adlar ayarlanır).
MariaDB Docker Images’ın başka sürümlerine sahipseniz söz konusu imaja dayalı olarak bir kapsayıcıyı çalıştıracak etiketleri belirtebilirsiniz. Örneğin, MariaDB 10.4 imajımız olduğunu ve bu imajı temel alan bir konteyner çalıştırmak istediğimizi varsayarak etiketi mariadb:10.4 olarak belirtebilirsiniz.
docker run --name mariadbdemo -d -e MYSQL_ROOT_PASSWORD=password mariadb:10.4
Check docker run --help
for more options.
Çalışan Container’ları Listeleme
Once you have run a container, you can list them using the docker ps
command.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce03099cfffa mariadb "docker-entrypoint.s…" 43 seconds ago Up 39 seconds 3306/tcp mariadbdemo
Çalışan ve durdurulan tüm konteynerleri listelemek için docker ps -a komutunu kullanın.
Yalnızca çalışan konteyner kimliklerini almak için;
docker ps -q
MariaDB Konteyner Günlüklerini Kontrol Etme
docker logs <name-or-container-id> komutunu kullanabilirsiniz;
docker logs mariadbdemo
Veya
docker logs ce03099cfffa
MariaDB Docker Container’a Erişim
MariaDB liman işçisi konteyneriniz artık arka planda çalışıyor. Şu şekilde erişebilirsiniz:
- Launching the interactive shell of the container
- Logging into MariaDB Docker container using mysql client from your host via the docker network.
MariaDB docker kapsayıcısı için etkileşimli bir bash kabuğu başlatmak için docker exec -it <kapsayıcının adı|kapsayıcı kimliği> <kabuk>’u kullanın.
docker exec -it mariadbdemo bash
Bu sizi konteyner etkileşimli bash kabuğuna götürür;
root@9f26c99c35a5:/#
Ana makinenizdeki mysql istemcisini kullanarak MariaDB kapsayıcınıza da giriş yapabilirsiniz.
Bunun için MySQL istemcisini kurmanız gerekmektedir. Örneğin Ubuntu sistemlerinde şu komutu çalıştırarak MySQL istemcisini kurabilirsiniz:
apt install mysql-client
Daha sonra MariaDB kapsayıcınıza atanan IP adresini alın. Konteynerin IP adresini almak için, konteyner hakkında tüm ayrıntıları sağlayan docker inspect <container-of-the-container-id> komutunu kullanın.
docker inspect mariadbdemo | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
Bu durumda MariaDB konteynerimize 172.17.0.2 IP adresi atanır.
Konteynerimize bağlanmak amacıyla MySQL host istemcisini kullanmak için;
mysql -u root -p -h 172.17.0.2
Komut, kabın varsayılan bağlantı noktası olan 3306’yı dinlediğini varsayar.
Yukarıdaki Container’ı çalıştırırken MYSQL_ROOT_PASSWORD değişkeni ile belirlediğiniz şifreyi kullanmanız gerekecektir.
Enter password: password
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.5-10.5.4-MariaDB-1:10.5.4+maria~focal mariadb.org binary distribution
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Kabuk içinde artık MariaDB’nizi bir ana bilgisayarda çalıştırırken yaptığınız gibi yönetebilirsiniz.
NOT: Liman işçisi konteynerinize atanan IP adresi dinamiktir ve konteyneri yeniden başlatırsanız liman işçisi ağı içinde ona yeni/farklı bir IP adresi atanacaktır.
MariaDB Docker Container’a Dışarıdan Erişme
MariaDB konteynerinde çalışan veritabanınıza erişmesi gereken bazı harici uygulamalarınız varsa, konteyner bağlantı noktasını ana bilgisayar sistemi aracılığıyla harici kullanıma açmanız gerekir. Varsayılan olarak kapsayıcıya yalnızca ana bilgisayar sisteminden erişilebilir
Örneğin, MariaDB kapsayıcımız varsayılan bağlantı noktası 3306’yı dinliyor.
MariaDB bağlantı noktası için ana makinenizdeki dinleme bağlantı noktalarını kontrol ederseniz herhangi bir bağlantı noktası bulamazsınız;
ss -altnp | grep 3306
Bir konteyner portunu ortaya çıkarmak için docker çalıştırma seçeneklerini kullanın, -p <ana bilgisayar-bağlantı noktası>:<konteyner-bağlantı noktası>. Aynı bağlantı noktasını kullanan ana bilgisayar aracılığıyla MariaDB konteyner bağlantı noktası 3306’yı kullanıma sunmak için aşağıdaki örnek komuta bakın;
docker run --name mariadbdemoport -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mariadb
Kapsayıcı için aynı adları kullanmanız gerekiyorsa, mevcut kapsayıcıyı durdurup kaldırın ve aynı adı kullanarak yeni kapsayıcıyı yeniden başlatın.
Bağlantı noktası açıklığını doğrulayalım
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3489ce131cce mariadb "docker-entrypoint.s…" 4 minutes ago Up 2 seconds 0.0.0.0:3306->3306/tcp mariadbdemoport
ce03099cfffa mariadb "docker-entrypoint.s…" About an hour ago Up 40 seconds 3306/tcp mariadbdemo
PORTS sütununu kontrol ederseniz, yeni konteynerimiz için konteyner portunun ana makinedeki 3306 numaralı portta açık olduğunu ve tüm arayüzleri dinlediğini fark edeceksiniz;
Ana bilgisayarın IP adresini belirtmeniz gerekiyorsa, -p ana bilgisayar-IP-adresi:Bağlantı Noktası:<kapsayıcı-bağlantı noktası> komutunu kullanın.
Ana bilgisayardaki dinleme bağlantı noktalarının tekrar kontrol edilmesi;
ss -altnp | grep 3306
LISTEN 0 4096 *:3306 *:*
Konteyner bağlantı noktasını dinamik bir ana bilgisayar bağlantı noktasıyla eşlemeniz gerekiyorsa bu seçeneği kullanın;
-p <container-port>
docker run --name mariadbdemo-dport -p 3306 -e MYSQL_ROOT_PASSWORD=password -d mariadb
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bee9f036aedd mariadb "docker-entrypoint.s…" 8 seconds ago Up 3 seconds 0.0.0.0:32768->3306/tcp mariadbdemo-dport
3489ce131cce mariadb "docker-entrypoint.s…" 12 minutes ago Up 7 minutes 0.0.0.0:3306->3306/tcp mariadbdemoport
ce03099cfffa mariadb "docker-entrypoint.s…" About an hour ago Up 8 minutes 3306/tcp mariadbdemo
Gördüğünüz gibi konteyner limanı dinamik port 32768’de gösteriliyor.
Docker port komutunu kullanarak konteyner portunun hangi dinamik porta eşlendiğini her zaman bulabilirsiniz;
docker port mariadbdemo-dport
3306/tcp -> 0.0.0.0:32768
MariaDB Docker Container için Kalıcı Veri Birimini Ayarlama
Bir konteyner kaldırıldığında, iç hacimlerine yazdığı tüm veriler de kaldırılır. Verilerin kapsayıcı silme işlemleri sırasında kalıcı olmasını sağlamak için, MariaDB Docker kapsayıcısının iç birimini bazı ana bilgisayar dizinleriyle eşleyebilirsiniz.
Dahili bir Docker birimini harici bir ana bilgisayar birimine bağlamak için docker run komutunun -v <ana bilgisayar dizini>:<kapsayıcı dizini> seçeneğini kullanın.
MariaDB kapsayıcısının varsayılan veri dizini /var/lib/mysql’dir.
Örneğin, kapsayıcı verilerinin ana dizinim /opt/mariadb/data’ya yazılmasını istersem, önce dizini oluşturun ve -v seçeneğini kullanarak veri dizinlerini eşleyen bir kapsayıcı çalıştırın.
mkdir -p /opt/mariadb/data
docker run --name mariadbdemo-volume -v /opt/mariadb/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mariadb
Bu nedenle, konteyner veri dizinine (/var/lib/mysql) yazılan herhangi bir konteyner verisi, aynı anda /opt/mariadb/data ana bilgisayarındaki veri dizinine de yazılacaktır.
Durdur, Duraklat, Yeniden Başlat Docker Konteynerini Kaldırma
Çalışan bir kapsayıcıyı durdurmak için docker stop komutunu kullanın;
docker stop [option] <name|id>
docker stop mariadbdemo
Kimliklerini kullanarak tüm konteynerleri durdurabilirsiniz;
docker stop $(docker ps -q)
Bir kapla işiniz bittiğinde onu çıkarmayı seçebilirsiniz;
docker rm [option] <name|id>
docker rm mariadbdemo
Kaldırmayı zorlamak için;
docker rm --force mariadbdemo
Konteyneri duraklatmak için;
docker pause mariadbdemo
Yeniden başlatmak için;
docker restart mariadbdemo
Docker hacimlerini listelemek için;
docker volume ls
Docker inspect komutunu kullanarak belirli docker konteyner hacmini bulun.
Belirli birimi kaldırın;
docker volume rm volume-name
Yazının orijinalini buradan okuyabilirsiniz.