หนึ่งในคุณสมบัติที่สำคัญที่สุดของ Docker Containerization คือมันสร้างสภาพแวดล้อมแบบมีขอบเขตสำหรับการรันแอปพลิเคชันโดยติดตั้งการพึ่งพาและแพ็คเกจที่จำเป็นทั้งหมด แอปพลิเคชันส่วนใหญ่ต้องการฐานข้อมูลส่วนหลังเพื่อจัดเก็บจุดข้อมูล Oracle มี Docker Images สำหรับการรัน MySQL ภายในคอนเทนเนอร์ ดังนั้นจึงเป็นตัวเลือกที่ยอดเยี่ยมสำหรับการทดสอบแอปพลิเคชันฐานข้อมูลของคุณ โดยให้อินสแตนซ์ MySQL Image น้ำหนักเบาพร้อมฟีเจอร์การล้างข้อมูลเมื่อการทดสอบของคุณเสร็จสิ้น
Docker ให้คุณดาวน์โหลดอิมเมจที่มีไบนารีและการอ้างอิง MySQL และสร้างระบบไฟล์เสมือน โปรดทราบว่าหากคุณเริ่ม Docker Container ด้วยแฟล็ก −−rm หลังจากที่คุณหยุดคอนเทนเนอร์ ระบบไฟล์ทั้งหมดพร้อมกับ Container Instance จะถูกลบ ดังนั้นการรวมแฟล็กนี้เข้ากับคำสั่ง run จะทำให้คุณมีคุณสมบัติการล้างข้อมูลอัตโนมัติสำหรับการทดสอบ แอปพลิเคชัน
ในบทความนี้ เราจะมาดูวิธีการสร้าง MySQL Docker Containers สำหรับทดสอบแอปพลิเคชันของคุณ
การสร้าง Docker Container สำหรับ MySQL
คำสั่งด้านล่างสร้างอินสแตนซ์สำหรับอิมเมจ MySQL ด้วยเวอร์ชันล่าสุดและแฟล็ก −−rm ช่วยในการกำจัดคอนเทนเนอร์ไปพร้อมกับระบบไฟล์เมื่อคอนเทนเนอร์หยุดทำงาน
sudo docker run −−rm −−name=mysql−test −e MYSQL_ALLOW_EMPTY_PASSWORD=yes −d mysql/mysql−server
ในคำสั่งข้างต้น แฟล็ก −−rm สั่งให้ Docker daemon ลบระบบไฟล์คอนเทนเนอร์หลังจากที่หยุดทำงาน แฟล็ก −−name ระบุชื่อให้กับคอนเทนเนอร์ “−e MYSQL_ALLOW_EMPTY_PASSWORD=yes” สั่งให้คอนเทนเนอร์สร้างรหัสผ่านรูทว่าง
การดำเนินการคอนเทนเนอร์ MySQL Docker
โปรแกรมไคลเอนต์ MySQL ใช้การเชื่อมต่อซ็อกเก็ตในพื้นที่เช่นเชื่อมต่อผ่าน localhost ในการสร้างการเชื่อมต่อ MySQL ในเครื่อง คุณสามารถใช้คำสั่งต่อไปนี้
sudo docker exec −it mysql−test mysql −uroot
ผู้บริหาร คำสั่งบอกให้ Docker daemon รันคำสั่งที่ระบุภายใน Docker Container แฟล็ก −it สั่งให้ Docker เปิดคอนเทนเนอร์ในเชลล์แบบโต้ตอบ คำสั่งเชลล์ที่ทำงานภายใน Docker Container คือ “mysql −uroot”
การเข้าถึงไคลเอ็นต์โดยใช้ TCP/IP
หลังจากที่คุณรันคำสั่งในขั้นตอนก่อนหน้านี้แล้ว Docker จะกำหนดที่อยู่ IP ส่วนตัวให้กับ Docker Containers นอกจากนี้ยังสร้างอินเทอร์เฟซเครือข่ายในระบบของคุณ สิ่งเหล่านี้สามารถใช้เป็นปลายทางเพื่อสร้างการเชื่อมต่อ TCP/IP กับบริการ
คุณไม่สามารถเข้าถึงบริการ MySQL ได้เว้นแต่คุณจะสร้างการเชื่อมต่อ TCP/IP ระหว่างสองปลายทาง ในการดำเนินการดังกล่าว คุณต้องค้นหาที่อยู่ IP สำหรับ Virtual Network Interface ในระบบของคุณและอินสแตนซ์ Docker Container คุณสามารถทำได้โดยใช้คำสั่งด้านล่าง
หากต้องการค้นหาที่อยู่ IP ของอินเทอร์เฟซเครือข่ายในระบบของคุณ ให้ดำเนินการ -
ip addr show docker0
ที่อยู่ IP ที่คุณได้รับจากคำสั่งด้านบนนี้จะกลายเป็นหนึ่งในปลายทางที่แอปพลิเคชันไคลเอนต์ของคุณจะเชื่อมต่อ และคุณจะใช้มันเพื่อสร้างผู้ใช้สำหรับ MySQL ของคุณ
หากต้องการค้นหาปลายทางอื่น ซึ่งเป็นที่อยู่ IP ของ Docker Container Instance สำหรับ MySQL คุณสามารถใช้คำสั่งนี้ได้ -
sudo docker mysql−test
เมื่อใช้ที่อยู่ IP ทั้งสองนี้ คุณจะก้าวไปข้างหน้าและสร้างการเชื่อมต่อ TCP/IP และสร้างผู้ใช้เพื่อเรียกใช้แอปพลิเคชันไคลเอ็นต์ของคุณได้
ในการทำให้ระบบภายในของคุณเป็นผู้ใช้รูทโดยไม่ต้องใช้รหัสผ่าน คุณสามารถใช้คำสั่งเหล่านี้ได้
ภายในเทอร์มินัลของระบบของคุณ ให้รัน mysql−test Docker Container เพื่อเข้าถึง mysql shell
sudo docker exec −it mysql−test mysql −uroot
เมื่อคุณเข้าถึงเชลล์ mysql แล้ว ให้รันคำสั่งนี้เพื่อสร้างระบบภายในของคุณในฐานะผู้ใช้รูท
create user root@<virtual network interface IP> identified by '';
โปรดทราบว่าที่อยู่ IP ที่ใช้ในคำสั่งข้างต้นควรเป็นของอินเทอร์เฟซเครือข่ายเสมือนในเครื่องของคุณที่เราพบในขั้นตอนก่อนหน้านี้
หากต้องการให้สิทธิ์การเข้าถึงทั้งหมดแก่ผู้ใช้ที่สร้างขึ้นข้างต้น ให้ใช้คำสั่งนี้
grant all on *.* to root@<virtual network interface IP> with grant option;
หากต้องการล้างข้อมูลอัตโนมัติหลังจากที่คุณทำการทดสอบทั้งหมดแล้ว คุณสามารถหยุดคอนเทนเนอร์และนำออกโดยใช้หยุด และ rm คำสั่ง
โดยสรุป ในบทความนี้ เราได้พูดถึงวิธีการสร้างและเปิดใช้ MySQL Docker Container และเข้าถึงโดยการสร้างการเชื่อมต่อ TCP/IP ระหว่าง Virtual Network Interface บน Linux Machine และ Docker Container เราสร้างผู้ใช้รูทและให้สิทธิ์การเข้าถึงทั้งหมด