Windows ile Docker kullanımı

 



Docker kelimesini ilk kez duyanlar için biraz bilgi verelim. VirtualBox'a benzeyen ve konteynerlerden oluşan bir yapıdır. Farklı olarak, VirtualBox'da her yazılım projesi için ayrı bir işletim sistemi kurmak gerekirken, Docker'da buna gerek yoktur. Her proje, tek bir işletim sistemi içinde farklı konteynerlerde bağımsız (izole) olarak çalışabilirler. Bu nedenle, Docker daha performanslı çalışır. Farklı kullanım amaçları olsada benim kullanım amacım şu şekilde.. Örneğin bir yazılım projesi için Mysql (veritabanı) sunucu ihtiyacınız var. Bu amaçla, hemencecik dockerhub'da bulunan resmi Mysql imajını kullanabilirsiniz. Yani, bilgisayara Mysql indirip kurmanıza gerek yok, kurulmuşu var zaten :) 

Ya da apache-php-mysql çalışmak istediniz.. Docker ile birkaç dakikada ortam hazır olurken, diğer türlü saatleriniz boş yere harcanabilir...

Docker kullanmak için Docker Desktop programını kullanmak gerekiyor. Şart değil ama işleri kolaylaştırıyor.


Docker Desktop kurulumu

Docker Desktop programının son sürümünü buradan indirebilirsiniz. Yalnız durun bir saniye, bu programın kurulumunu yapmadan önce başka ayarlar yapmak gerekiyor. Ctrl+Shift+Esc ile Görev Yöneticisini açın. Performans sekmesine gelin. CPU içinde sağ alt köşede Sanallaştırma: Etkin görülmelidir. Aksi halde bilgisayarın BIOS ayarlarına girip VTx olarak geçen sanallaştırma (Virtualization Technology) ayarını açmanız gerekir. Bu ayar, HP bilgisayarda Security > System Security menüsünde bulunuyor. 

Windows arama çubuğuna "Windows özelliklerini aç veya kapat" yazın. Resimde görülen, Linux için Windows Alt sistemi kutucuğunu işaretleyin. Tamam butonuna tıklayınca bu özellik (wsl) kurulacak ve bilgisayarı yeniden başlatmanız gerekecektir. Komut satırı veya komut istemi (cmd) penceresinde wsl -l -v yazınca versiyon olarak 2 görmeniz gerekiyor. (wsl2)




Wsl ismi biraz tuhaf olmuş. Windows Subsystem for Linux, yani linux için windows alt sistemi. Wsl'yi sanal makine olarak düşünün. Wsl içine Docker Desktop'un yanı sıra Ubuntu da kurulabiliyor. Bu durumda Linux Subsystem for Windows oluyor. Yani wsl isminin aslında lsw olması gerekmez miydi ? Windows zaten bilgisayarda duruyordu, linux sonradan bilgisayara geldi. Lsw pardon wsl sayesinde linux dağıtımı olan Ubuntu'yu, windows makinede kullanabiliyoruz.




Neyse, yukarıda yazdığım iki işlemi yaptıysanız (VTx aktivasyonu ve WSL kurulumu) artık Docker Desktop'u kurabilirsiniz...


Sağ alt köşede sürüm bilgisi görünecektir

Görev çubuğunda, sağ alt köşede gemicik ikonu görülecektir. İkona sağ klik yapınca en üstte Docker Desktop is running yazdığı yani programın çalıştığı belli olacaktır. Bu sırada bilgisayarda bir kasma veya yavaşlama hissederseniz, bilgisayarınız biraz eski demektir. Böyle bir durumda, Windows'u canlandırmaya yarayan ReviOS hakkında bilgi sahibi olmak için, önceki yazımı okuyabilirsiniz.


MySQL sunucuyu bir komut ile çalıştır

Mysql imajını kurmak için Docker Desktop programını kullanabilirsiniz. Alternatif veya daha kolay bir kullanım şeklide, komut isteminden, docker komutları vermektir. Bazı docker komutları burada listelenmiş. 

docker run --name some-mysql -v C:\Users\username\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql
Komutun açıklaması : Önceden indirilmemiş ise, internetten (dockerhub), mysql imajı indirilecektir. some-mysql adında bir konteyner oluşacaktır. Sunucunun, root parolası my-secret-pw olacaktır. Oluşacak veritabanının içindeki kayıtların silinmemesi için C:\Users\username\data dizini (volume) oluşturulacaktır. Burada, username kısmını kendi kullanıcı adınız olarak düzeltmeniz gerekiyor. Bilgisayarın 3306 numaralı portuna gelen istekler, konteynerin 3306 numaralı portuna yönlendirilecektir.


MySQL Workbench

Bu program ile sunucuya bazı bilgiler yazabilir veya okuyabiliriz. (MSSQL server için kullanılan SSMS programı benzeri bir program) Çalışması için gereken C++ kütüphanelerini buradan indirebilirsiniz. (x86 ve x64 her ikisinide kurun)

Workbench penceresinde, MySQL connections yazısının sağında bulunan + ikonuna tıklayın. Connection name'e birşey yazın. Hostname : 127.0.0.1 Port : 3306 olmalıdır. Store in vault butonuna tıklayarak root parolasını girin (my-secret-pw) Test Connection butonu ile bağlantının başarılı olduğunu test edebilirsiniz. Ardından OK butonuna tıklayın. Oluşan bağlantıya tıklayınca, sql komutlarını gireceğimiz pencere açılacaktır.

Aşağıda yazan sql komutlarını teker teker mouse ile seçip, üstteki şimşek (execute) butonuna tıklayın...

CREATE DATABASE test
USE test
CREATE TABLE tasks (id INT AUTO_INCREMENT PRIMARY KEY,description VARCHAR(100))
INSERT INTO tasks (description) VALUES ('Finish work'), ('Have fun');
SELECT * FROM tasks
Komutların açıklaması : test isminde veritabanı oluştur. test'i kullanarak komutları çalıştır. tasks isminde bir tablo oluştur. Tabloya iki satır bilgi gir. Girilen bilgileri göster.


Sunucuyu Docker'dan silelim

Bunun için aşağıdaki komutları sırasıyla girelim.

docker stop some-mysql
docker rm some-mysql
docker ps
Komutların açıklaması : some-mysql ismindeki konteyner'i durdur ve sil. Çalışan konteynerleri göster. Çalışan konteyner olmadığı görülecektir. Daha önce indirilen imaj silinmemiştir. Docker Desktop'da veya komut istemi penceresinde docker images komutuyla görebilirsiniz.


Veritabanı içindeki bilgiler silinmedi

Docker Desktop'dan da görebileceğiniz gibi konteyner yani mysql sunucu silindi. Üstte yazdığım docker run komutunu tekrar girersek sunucu birkaç saniye sonra tekrar çalışır duruma gelecektir. Hem de veritabanında herhangi bir bilgi kaybı olmadan...




Node.js ile veritabanı bilgilerini okuyalım

Node.js'in bilgisayara kurulumu gayet basittir. Bu yazıda bahsetmiştim. C:\Users\user dizininde aşağıdaki komutları komut satırında yazalım. (user, kendi kullanıcı adınız)


mkdir mysql
cd mysql
npm init -y
npm install mysql2
Komutların açıklaması : mysql dizini oluştur. Bu dizine gir. package.json dosyası oluştur. mysql2 kütüphanesini indir ve kur.

Windows explorer (dosya gezgini) ile bu dizine girip boş bir yerde sağ klik yapalım. Yeni > Metin Belgesi seçelim. Dosyaya sağ klik yapıp Yeniden adlandır seçelim. Adını app.js olarak değiştirelim. Daha önce kurmadıysak, Notepad++ programını kuralım. Notepad'i de kullanabilirsiniz ama ++ kodları renkli gösterdiğinden program daha okunaklı oluyor. Ayrıca farklı avantajlar sunmaktadır. Örneğin bir süslü paranteze tıklayınca, eşi gösterilecektir. app.js dosyasına sağ klik yapıp Edit with Notepad++ seçeneğine tıklayalım. Uzantı js olduğundan Notepad++ dili tanıyacaktır. Dosya uzantısı txt ise programlama dilini tanımaz, tanıması için Diller  > Javascript menüsünü kullanın. Aşağıdaki programı kaydettikten sonra, programı node app komutu ile çalıştırabilirsiniz.

const mysql = require('mysql2');

const connection = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "my-secret-pw",
  database: "test"
});

connection.connect((err) => {
  if (err) { console.log(err); }
  console.log("Mysql bağlantısı oluşturuldu.");
  
  let sqlSorgusu = `SELECT * FROM tasks`
  connection.query(sqlSorgusu, (err, results) => {
    if (err) throw err;
    console.log(results);
  });
  
  // Close the connection
  connection.end();
});


Objelerden oluşan bir array (dizi) olarak sonuçlar listeleniyor...




Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Lazarus free pascal - Tanıtım