Docker คืออะไร

Docker คือ engine ตัวหนึ่งที่มีการทำงานในลักษณะจำลองสภาพแวดล้อมขึ้นมาบนเครื่อง server เพื่อใช้ในการ run service ที่ต้องการ มีการทำงานคล้ายคลึงกับ Virtual Machine เช่น VMWare, VirtualBox, XEN, KVM แต่ข้อแตกต่างที่ชัดเจนคือ Virtual Machine ที่รู้จักกันก่อนหน้านี้นั้น เป็นการจำลองทั้ง OS เพื่อใช้งานและหากต้องการใช้งาน service ใดๆ จึงทำการติดตั้งเพิ่มเติมบน OS นั้นๆ แต่สำหรับ docker แล้วจะใช้ container ในการจำลองสภาพแวดล้อมขึ้นมา เพื่อใช้งานสำหรับ 1 service ที่ต้องการใช้งานเท่านั้น โดยไม่ต้องมีส่วนของ OS เข้าไปเกี่ยวข้องเหมือน Virtual Machines อื่นๆ ตัวอย่างดังรูป

Docker นั้น เป็นที่รู้จักกันอย่างแพร่หลายในช่วง 1-2 ปีที่ผ่านมานี้ เนื่องจากสามารถใช้งานได้อย่างสะดวกและตอบสนองความต้องการของ ผู้พัฒนาโปรแกรม (Developer) หรือ ผู้ดูแลระบบ (System admin)

Docker image คืออะไร

Docker image เป็นเหมือนตัวต้นแบบของ container ซึ่งภายในจะประกอบด้วย application ต่างๆ ที่มีการติดตั้งไว้เพื่อใช้งานสำหรับ service นั้นๆ รวมทั้งมีการ config ค่าต่างๆ ไว้เรียบร้อยแล้ว จากนั้นก็นำมาสร้างเป็น docker image บน registry เพื่อนำใช้งาน ทั้งนี้ผู้ใช้งานสามารถยังสร้าง docker image สำหรับใช้งานเองได้อีกด้วย

Docker container คืออะไร

Docker container สามารถมองได้เสมือนกล่อง ซึ่งนำ docker image มาติดตั้ง เพื่อให้สามารถใช้งาน service ที่ต้องการจาก image นั้นๆ ได้ โดยใน container แต่ละตัวจะมีการใช้งาน RAM, CPU, ไฟล์ config ต่างๆ เป็นของแต่ละ container เอง และยังสามารถสั่ง start, stop ได้ที่ container นั้นๆ อีกด้วย

ความน่าสนใจของ docker

  • Docker engine สามารถใช้งานได้บนหลาย platform ทั้งบน Linux, Mac และ Windows
  • Docker มีขนาดเล็ก สามารถใช้งาน และติดตั้งได้อย่างรวดเร็ว และสะดวกในการ start / stop หรือแม้แต่การย้ายไปใช้งานสำหรับเครื่อง server อื่นที่มีการ run docker engine ก็สามารถทำได้โดยไม่ซับซ้อน
  • ผู้ใช้งาน docker ไม่จำเป็นต้องติดตั้ง OS อีกครั้งเพื่อติดตั้ง container รวมทั้งไม่จำเป็นต้อง config เพิ่มเติมในส่วนที่ไม่จำเป็นอีกด้วย
  • Docker มีความต้องการในการใช้ CPU, RAM และพื้นที่น้อยกว่า Virtual Machine ทั้งนี้ในทรัพยากรที่มีเท่ากัน docker สามารถใช้งาน container ได้มากกว่า Virtual Machine
  • เนื่องจากผู้ใช้งาน สามารถสร้าง docker image ได้เอง จาก dockerfile ดังนั้นการใช้งาน docker ยังช่วยลดปัญหาสภาพแวดล้อมที่ต่างกัน ที่มักพบเมื่อบาง application สามารถทำงานได้บน development server แต่ไม่สามารถใช้งานบน production server ได้
  • Docker ยังมี docker registry ซึ้งผู้ใช้งานสามารถเลือก pull image ต่างๆ ที่มีการสร้างไว้ให้แล้วมาใช้งาน โดยมี Docker Hub เป็น registry หลักในการเรียกใช้ image

การติดตั้ง docker บน centOS 7

สามารถตรวจสอบ การตั้งค่าเบื้องต้นของ centos 7 เพิ่มเติมได้จาก https://www.hostpacific.com/basic-centos7-configuration/

เริ่มต้นการติดตั้งด้วยการ update package ต่าง และติดตั้ง docker

หลังจากติดตั้งเรียบร้อย ก็ทำการ start docker daemon

ตรวจสอบสถานการณ์ทำงานว่ามีการ active เรียบร้อย

 

เริ่มต้นการใช้งาน Docker

รูปแบบคำสั้งการใช้งาน จะคล้ายกับคำสั่ง Linux ทั่วๆไป เช่น

 

รูปแบบคำสั้งเพิ่มเติม เช่น

 

COMAND เบื้องต้นที่ควรทราบ

port      List port mappings or a specific mapping for the container

images แสดงรายละเอียดของ image ที่มีบนเครื่อง server

ps        แสดงรายละเอียดของ container ที่มีการ start การทำงาน

pull       ดึง image จาก registry มาใช้งาน

port      กำหนด port การเชื่อมต่อ ระหว่าง container และเครื่อง server

search  ตรวจสอบหา image ที่ต้องการใช้งานจาก docker hub

start     สั่งให้ container เริ่มทำงาน

stop     สั่งให้ container หยุดทำงาน

run      ใช้ในการสร้าง container ใหม่ กรณีที่ยัง ไม่มี docker image นั้นๆ บนเครื่อง server คำสั่งนี้จะ pull                           image ลงมายังเครื่องโดยอัตโนมัติ

rm        ลบ container ที่ไม่ต้องการใช้งาน

rmi       ลบ image ที่ไม่ต้องการใช้งาน

เมื่อติดตั้งเรียบร้อยแล้ว สามารถตรวจสอบเพิ่มเติมว่า สามารถติดตั้ง docker ได้อย่างถูกต้อง ด้วยการทดสอบ เรียกใช้งาน hello-world image.

จาก output พบว่า สามารถติดตั้งได้เรียบร้อยดีแล้ว

การติดตั้ง container เพื่อใช้งาน

สำหรับในส่วนต่อไป จะเป็นการติดตั้ง container เพื่อนำมาใช้งานสำหรับ service นั้นๆ

ตัวอย่างที 1 การติดตั้ง Nginx

สร้าง directory และ ไฟล์ สำหรับเก็บข้อมูล web และสร้างไฟล์ index.html

  • docker run คือ การสั่งให้ทำการสร้าง container ใหม่
  • –name nginx-webserver1 คือการกำหนดชื่อ container ที่ต้องการสร้าง
  • -v /var/www/html:/usr/share/nginx/html:ro คือการกำหนด ช่องทางการเชื่อมต่อ ระหว่าง container และ content ที่มีบนเครื่องคือ /var/www/html
  • -p 80:80 เป็นการกำหนดการเชื่อมต่อ port ของ container และ เครื่อง server จากตัวอย่าง เป็นกำหนดให้ nginx ใช้ port 80 (ค่าหน้าเครื่องหมาย colon)
  • -d คือ กำหนดการทำงานเป็น background mode
  • nginx คือ ชื่อ image ที่เรียกใช้งาน

เมื่อสั่งคำสั่งเรียบร้อย ให้ลองทดสอบเรียก web ด้วยชื่อ IP ก็จะพบว่า สามารถเรียกใช้งาน web site ได้แล้ว

ตรวจสอบ image ที่มีอยู่บน server ขณะนี้

ตรวจสอบ container ที่มีการ start อยู่ ซึ่งคือ nginx-webserver1

 

ตัวอย่างที 2 การติดตั้ง WordPress

ตามปรกติแล้ว เมื่อต้องการใช้งาน CMS ผู้ใช้งานจะต้องติดตั้ง database service, web service (Apache, Nginx หรืออื่นๆ) รวมทั้ง PHP และดำเนินการปรับ config ในส่วนต่างๆ ของแต่ละ service จึงจะสามารถติดตั้ง wordpress ได้ ตัวอย่างนี้ จะนำเสนอการติดตั้ง wordpress ด้วย docker ว่าสามารถดำเนินการได้อย่างไร

เริ่มด้วยการติดตั้ง database ผ่าน docker

mariadb:latest หมายถึง docker image mariadb ซึ่งเป็น version ล่าสุด

และติดตั้ง WordPress

เมื่อคำสั่งทำงานเรียบร้อย ให้เปิดหน้า web browser: http://IP:8080 เพื่อกำหนดค่าสำหรับ admin ของ WordPress อีกเล็กน้อย

ก็จะสามารถใช้งาน WordPress ได้เรียบร้อย

ทั้งเมื่อตรวจสอบ docker container ที่มีการทำงาน จะพบว่ามี อยู่ 3 container ด้วยกัน

 

กรณีที่ต้องการยกเลิกการใช้งาน

เมื่อต้องการหยุดใช้งานสามารถสั่งได้ โดย

หรือหากไม่ต้องการใช้งาน container ดังกล่าวแล้ว สามารถลบออกได้

เมื่อตรวจสอบอีกครั้งจะพบว่า เหลือ container ที่ทำงานอยู่เพียง 2 container เท่านั้น

สำหรับในบทความนี้ ได้นำเสนอรายละเอียดรวมทั้งการนำไปใช้งานเบื้องต้น สำหรับ docker ซึ่งช่วยให้การติดตั้งโปรแกรมต่างทำได้สะดวกยิ่งขึ้น ทั้งนี้ docker ยังสามารถนำมาประยุกต์ใช้งานเพิ่มเติมได้อย่างหลากหลาย ซึ่งอาจขอกล่าวถึงในบทความต่อไป

ข้อมูลเพิ่มเติ

  • Docker documentation: https://docs.docker.com/engine/userguide/
  • Docker registry: https://hub.docker.com
Share this:Share on FacebookTweet about this on TwitterShare on Google+Pin on Pinterest