Docker: Mariadb’yi Docker ve Docker-Compose ile çalıştırma

Bu kılavuzda Mariadb 10’un yerel olarak docker ve docker compose ile nasıl çalıştırılacağını keşfedeceğiz.  Mariadb 10’u makinenize kurmadan yerel olarak çalıştırmak istiyorsanız veya Mariadb’nin birden fazla sürümünü sorunsuz bir şekilde çalıştırmak istiyorsanız bu yararlı olabilir.

 

Önkoşullar

Takip etmek için aşağıdakilere sahip olduğunuzdan emin olun:

  1. Docker yerel olarak yüklü olmalı
  2. Docker compose yerel olarak yüklü olmalı
  3. Komut satırıyla ilgili temel bilgiler

Docker run komutunu kullanma

Amacımıza ulaşmak için docker run komutunu kullanacağız.  İstediğimiz Mariadb sürümü mariadb:10.7 – mariadb görüntüsünün en son sürümü.

Veri dizini oluşturun

1
mkdir -p ~/apps/mariadb/data

Konteyneri çalıştırın

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ docker run -d \
    --name my-mariadb \
    -p 3306:3306 \
    -v ~/apps/mariadb/data:/var/lib/mysql \
    --user 1000:1000 \
    -e MYSQL_ROOT_PASSWORD=S3cret \
    -e MYSQL_PASSWORD=An0thrS3crt \
    -e MYSQL_USER=citizix_user \
    -e MYSQL_DATABASE=citizix_db \
    mariadb:10.7
Unable to find image 'mariadb:10.7' locally
10.7: Pulling from library/mariadb
7b1a6ab2e44d: Pull complete
034655750c88: Pull complete
f0b757a2a0f0: Pull complete
4bbcce26bc5e: Pull complete
04f220ee9266: Pull complete
89c8a77f7842: Pull complete
d1de5652303b: Pull complete
e10058b6c45e: Pull complete
a07ac6f8b619: Pull complete
6260e28f2886: Pull complete
Digest: sha256:832c6e488f49720f484f87ee9f2cd4487321b373db07ac77037860bcd97d92bb
Status: Downloaded newer image for mariadb:10.7
75c4a2f716d9ec95fe7ca7a3c7b071755a9ec94f824e0aa17f703d831aedadd8

Yukarıdaki komutta:

  • -d, liman işçisi konteynerinin bağımsız bir işlem olarak çalışmasını bildirir.  Konteyneri arka planda çalıştırır ve konteyner kimliğini yazdırır
  • -p bağlantı noktası eşlemesi içindir.  Container'a, konteyner portunu harici olarak açığa çıkarması talimatını veriyoruz.  Konteyner bağlantı noktası 3306, ana bilgisayar bağlantı noktası 3306 ile eşlenir. Bu, hizmete localhost:3306 aracılığıyla erişilebileceği anlamına gelir.
  • -v yönergesi birimleri bağlamak için kullanılır.  Bizim durumumuzda /var/lib/mysql konteyner birimini ~/apps/mariadb/data ana bilgisayar yoluna monte ediyoruz.  Konteynerler, çalıştığı süre boyunca verilerini içerecek olan geçici cihazlardır.  Bir konteyner durdurulduğunda verileri kaybolur.  Birimlerin takılması, verilerin kapsayıcı yeniden başlatıldığında yeniden kullanılabilecek bir ana bilgisayar yoluna eklenmesini sağlar.
  • –user argümanı, kabı isteğe bağlı bir kullanıcıyla (root olmayan kullanıcı) çalıştırmak için kullanılır.  Bu, mysqld’i belirli bir UID/GID ile çalıştırmanız gerektiğinde gerçekleşir.
  • -e argümanı ortam değişkenleri içindir.  Sağlanan ortam değişkenleri bir Mariadb kullanıcısı, parolası ve veritabanı oluşturmak için kullanılacaktır.

Konteynerimizin beklendiği gibi çalıştığını kontrol etmek için docker ps komutunu kullanın:

1
2
3
$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                                       NAMES
75c4a2f716d9   mariadb:10.7   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   my-mariadb

Benim durumumda konteyner, ona verdiğimiz isim olan my-mariadb olarak çalışıyor.  Etkileşimli olarak /bin/bash komutunu çalıştırırken docker exec komutunu kullanarak konteynere giriş yapabiliriz.  Burada ayrıca yukarıda belirttiğimiz kimlik bilgileri ile postgtres’e giriş yapıp versiyon kontrolü yapıyoruz.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$ docker exec -it my-mariadb /bin/bash
groups: cannot find name for group ID 1000
citizix@75c4a2f716d9:/$ mysql -u citizix_user -pAn0thrS3crt
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.7.1-MariaDB-1:10.7.1+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select version();
+-------------------------------------+
| version()                           |
+-------------------------------------+
| 10.7.1-MariaDB-1:10.7.1+maria~focal |
+-------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

Kullanılmadığı zaman kabı temizlemeniz gerekiyorsa, şu komutu kullanarak kabı durdurabilir ve kaldırabilirsiniz:

1
2
3
4
5
$ docker stop my-mariadb
my-mariadb

$ docker rm my-mariadb
my-mariadb

Docker-compose aracını kullanma

Docker-compose ile aynı işlevselliği elde edebiliriz.  Docker Compose, çok kapsayıcılı Docker uygulamalarını tanımlamaya ve çalıştırmaya yönelik bir araçtır.  Compose ile uygulamanızın hizmetlerini yapılandırmak için bir YAML dosyası kullanırsınız.

Docker Compose, hizmeti (bizim durumumuzda Mariadb), kullanılacak görüntü, kullanıma sunulacak bağlantı noktaları, bağlanacak birimler ve ortam değişkenleri gibi özelliklerle tanımlamanıza olanak tanır.

Yukarıdaki işlevselliğe ulaşmak için docker-compose’u nasıl kullanacağımız aşağıda açıklanmıştır.  Bunu docker-compose.yaml olarak kaydedin:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
version: '3.9'

services:
  mariadb:
    image: mariadb:10.7
    ports:
      - 3306:3306
    volumes:
      - ~/apps/mariadb:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=S3cret
      - MYSQL_PASSWORD=An0thrS3crt
      - MYSQL_USER=citizix_user
      - MYSQL_DATABASE=citizix_db

Şimdi konteyneri çalıştıralım

1
2
3
$ docker-compose up -d
Creating network "tmp_default" with the default driver
Creating tmp_mariadb_1 ... done

Komutlar:

  • up konteyneri çalıştırır
  • -d müstakil moda geçirir

ps komutunu kullanarak kapsayıcı işlemlerini doğrulayın:

1
2
3
4
5
$ docker-compose ps
    Name                   Command              State               Ports
--------------------------------------------------------------------------------------
tmp_mariadb_1   docker-entrypoint.sh mariadbd   Up      0.0.0.0:3306->3306/tcp,:::3306
                                                        ->3306/tcp

Kapsayıcıda oturum açmak ve Mariadb’de oturum açmak için şunu kullanın:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$ docker-compose exec mariadb /bin/bash

root@07f9050cea89:/# mysql -u citizix_user -pAn0thrS3crt
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.7.1-MariaDB-1:10.7.1+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select version();
+-------------------------------------+
| version()                           |
+-------------------------------------+
| 10.7.1-MariaDB-1:10.7.1+maria~focal |
+-------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

 

 

Yazının orjinalini buradan okuyabilirsiniz.