GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Membuat Wadah Docker MySQL untuk Pengujian

Docker adalah lingkungan runtime kontainer yang memungkinkan program untuk beroperasi di lingkungan yang dipenjara tanpa ketergantungan eksternal yang diperlukan. Kontainer serupa dalam beberapa konsep dengan mesin virtual, namun, mereka tidak menggunakan hypervisor dan berjalan dalam satu kernel instance, sering kali berbagi instance dengan wadah lain. Salah satu fitur utama dari containerization adalah kurangnya ketergantungan eksternal; container memiliki semua library runtime dan komponen yang diperlukan untuk menjalankan aplikasi.

Oracle telah menyediakan image container Docker sejak MySQL 5.5.40 dan dengan demikian menjadikan Docker pilihan yang sangat baik untuk melakukan pengujian di beberapa versi dan rilis MySQL. Sering kali diinginkan untuk melakukan pengujian regresi bug untuk menentukan rilis apa yang dipengaruhi bug atau untuk mengukur bagaimana perilaku berubah di antara rilis.

Docker memungkinkan peluncuran instans MySQL yang cukup ringan dengan fitur pembersihan otomatis setelah pengujian selesai. Dalam posting ini, saya akan menunjukkan beberapa cara Anda dapat menggunakan Docker untuk meluncurkan MySQL dan menggunakannya untuk pengujian.

Sebelum Anda dapat menggunakan Docker, itu harus diinstal pada mesin uji Anda. Jika Anda tidak memiliki akses ke sistem Linux secara langsung, saya sarankan Anda mendapatkan VirtualBox dan membuat mesin virtual Linux untuk menjalankan image Docker, beberapa pilihan yang baik untuk OS adalah CentOS 7 atau Fedora (terbaru). Fedora dapat dianggap sebagai varian hulu untuk varian Linux perusahaan dan dengan demikian akan dijamin memiliki dukungan teknologi terbaru.

Pemasangan

1. Pada sistem yang memiliki YUM atau DNF dan memiliki akses ke repositori sistem operasi, Anda dapat menginstal buruh pelabuhan dengan perintah ini:

# yum install docker docker-common

Setelah menjalankan perintah itu, Anda akan diminta oleh YUM untuk menginstal buruh pelabuhan dan semua dependensi yang diperlukan.

2. Untuk menggunakan Docker, selanjutnya Anda harus memulai layanan:

# service docker start

Pada distribusi CentOS/RHEL 7, gunakan systemctl:

# systemct start docker

3. Jika Anda ingin Docker tersedia setelah setiap reboot, aktifkan dengan perintah ini:

# chkconfig docker on

Pada distribusi CentOS/RHEL 7, gunakan systemctl:

# systemct enable docker

Cara kerja Docker

Docker sendiri hanyalah pengelola kontainer, untuk memanfaatkan Docker secara efektif, Anda perlu memiliki akses ke docker.io, situs tempat gambar kontainer Docker diterbitkan dan dapat diunduh. Wadah Docker di docker.io berisi gambar biner MySQL dan informasi dependensi sehingga layanan Docker dapat mengunduh file runtime dan sistem file virtual yang sesuai untuk wadah Docker untuk dijalankan.

Saat Anda membuat instance wadah Docker, ia mengalokasikan sistem file virtual untuk wadah yang persisten di seluruh proses (kecuali jika Anda menggunakan –rm mengalihkan). Anda dapat memulai dan menghentikan wadah Docker sesuka hati dan mereka akan tetap bertahan selama reboot. Salah satu fitur Docker yang membuatnya sangat berguna untuk instance pengujian adalah kemampuan wadah untuk dihapus setelah dihentikan. Jika Anda memulai container Docker dengan opsi –rm, saat container dimatikan, container tersebut juga dihapus dari sistem file dan membantu menghilangkan cruft.

Membuat dan meluncurkan container

Berikut adalah perintah paling sederhana untuk meluncurkan versi MySQL terbaru dalam sebuah wadah dan menghapusnya setelah dimatikan:

# docker run --rm --name=mysql8 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:latest

Berikut decode dari perintah itu:

  • pekerja buruh pelabuhan – buruh pelabuhan adalah nama yang dapat dieksekusi yang digunakan untuk melakukan semua fungsi buruh pelabuhan.
  • lari – ini adalah perintah yang diberikan kepada buruh pelabuhan, memerintahkan buruh pelabuhan untuk membuat wadah baru dan menjalankannya.
  • –rm – ini menginstruksikan buruh pelabuhan untuk menghapus file kontainer setelah dihentikan.
  • –nama=mysql8 – ini memberitahu buruh pelabuhan untuk memberi nama wadah 'mysql8' untuk semua referensi perintah di masa mendatang. Nama ini arbitrer tetapi harus deskriptif untuk menghindari bentrok dengan beberapa instance container.
  • -e MYSQL_ALLOW_EMPTY_PASSWORD – ini meneruskan opsi ke container selama fase pembuatan, memberi tahu container untuk menetapkan kata sandi root kosong selama proses pembuatan.
  • -d mysql/mysql-server:latest – ini memberi tahu buruh pelabuhan repositori dan versi untuk diunduh dari docker.io saat membuat wadah. Kata 'terbaru' adalah versi ajaib yang memberitahu buruh pelabuhan untuk mengunduh versi terbaru dari semua rilis MySQL, Anda juga dapat menentukan nomor versi yang tepat.

Beberapa perubahan yang berguna dari perintah di atas mungkin untuk menentukan versi MySQL atau memberinya nama yang unik. Berikut adalah contoh di mana MySQL 8.0.13 ditentukan dan nama unik yang serupa digunakan:

# docker run --rm --name=mysql8013 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:8.0.13

Anda bahkan dapat menarik instance MySQL 5.5 dengan cara ini juga:

docker run --rm --name=mysql55 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:5.5
Catatan :Contoh-contoh di atas SENGAJA mengabaikan setiap dan semua keamanan untuk tujuan kemanfaatan dan kenyamanan. JANGAN menggunakan atau mereplikasi konfigurasi ini di lingkungan produksi, mereka TIDAK aman!

Menggunakan instance Docker

Sejauh ini kami hanya membahas peluncuran instance Docker, tetapi tanpa akses program klien, itu tidak terlalu berguna. Membuat koneksi menggunakan program klien MySQL standar cukup mudah karena mereka menggunakan koneksi soket lokal dan terhubung melalui localhost. Jika Anda ingin terhubung menggunakan IP jaringan, seperti MySQL Workbench, sedikit lebih rumit.

Berikut ini contoh koneksi mysql CLI lokal:

# docker exec -it mysql8 mysql -uroot

Mari kita uraikan perintah itu:

  • eksekutif – memberi tahu buruh pelabuhan untuk menjalankan perintah di dalam instance container buruh pelabuhan.
  • -itu – memberitahu buruh pelabuhan untuk membuat sesi interaktif dengan pseudo-tty.
  • mysql8 – memberi tahu buruh pelabuhan bahwa perintah akan dieksekusi di instance container bernama 'mysql8'.
  • mysql -uroot – ini adalah baris perintah shell mentah aktual yang dijalankan buruh pelabuhan di dalam instance container.

Kontainer MySQL Docker memiliki utilitas baris perintah MySQL yang disertakan, seperti mysql, mysqlpump, mysqldump, dll. Jika Anda ingin menyalurkan data ke salah satu alat baris perintah, seperti memuat dump, Anda harus menghapus - t dari baris perintah, seperti ini:

# docker exec -i mysql8 mysql -uroot < dumpfile.sql

Akses TCP/IP ke container Docker

Menggunakan contoh perintah di atas, Docker akan menetapkan alamat IP pribadi yang tidak dapat dirutekan ke wadah dan membuat antarmuka jaringan virtual di sistem Anda. Antarmuka virtual dan wadah membentuk titik akhir untuk membuat koneksi TCP/IP ke layanan yang berjalan di wadah.

Untuk mengetahui alamat IP antarmuka jaringan virtual Anda di mesin Linux Anda, jalankan perintah ini:

shell> ip addr show docker0

8: docker0:  mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:f7:98:c4:d1 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:f7ff:fe98:c4d1/64 scope link
valid_lft forever preferred_lft forever

Dalam contoh di atas Anda dapat melihat bahwa alamat IP yang ditetapkan untuk antarmuka Docker virtual saya adalah 172.17.0.1, ini adalah titik akhir dari aplikasi klien Anda akan terhubung; ini adalah alamat IP yang akan Anda gunakan untuk membuat pengguna di MySQL.

Untuk menentukan alamat IP yang ditetapkan ke instance container Anda, jalankan perintah ini, ganti nama instance Anda dengan 'mysql' dalam contoh:

shell> docker inspect mysql8 | grep IPAddress

"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",

Pada output di atas, alamat IP instance container adalah 172.17.0.2, sehingga membuat titik akhir 172.17.0.1 <-> 172.17.0.2. Selanjutnya kita perlu membuat pengguna agar program klien dapat terhubung sebagai, jika tidak, Anda akan mendapatkan penolakan karena 172.17.0.1 bukan host yang diizinkan.

shell> docker exec -it mysql8 mysql -uroot

mysql> create user [email protected] identified by '';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to [email protected] with grant option;
Query OK, 0 rows affected (0.01 sec)

Setelah Anda membuat pengguna jaringan, Anda dapat terhubung ke instance container Anda sebagai root tanpa kata sandi. Jaringan 172.17.0.0/16 adalah jaringan pribadi yang tidak dapat dirutekan yang tidak dapat diakses dari luar mesin Anda, jadi tidak ada bahaya seseorang mengakses wadah buruh pelabuhan Anda dari luar.

Mematikan dan membersihkan

Setelah menyelesaikan pengujian, Anda harus mematikan instance Docker dan membersihkan file jika Anda tidak menggunakan --rm saat memulainya.

Untuk mematikan instance Docker:

# docker stop mysql8

Untuk menghapus instance:

# docker rm mysql8

Kesimpulan

Semoga saya telah mengilustrasikan kegunaan wadah Docker untuk pengujian dan penggunaan kotak pasir. Docker memiliki potensi untuk mengubah alur kerja Anda dan membuat pengujian regresi menjadi cepat, mudah, dan nyaman. Hub Docker berisi gambar untuk rilis 5.5.40 dan yang lebih baru.


Cent OS
  1. Cara Menjalankan MySQL di Docker Container:Panduan Sederhana dan Mudah Diikuti

  2. Cara Membuat, Mendaftar &Menghapus Wadah Docker di Linux

  3. Cara Membuat Database MySQL Di cPanel

  1. Cara Menjalankan MySQL Dalam Wadah Docker

  2. Cara SSH Ke Wadah Docker

  3. Cara Keluar dari Kontainer Docker

  1. Cara membuat gambar khusus dari wadah Docker

  2. Cara Membuat Repositori Yum Lokal untuk Paket MySQL Enterprise

  3. Cara Mengubah Zona Waktu Untuk Wadah Docker