Docker คือ … (เริ่มต้นกับ Docker)

Patchara Chukiatkajohn
I GEAR GEEK
Published in
3 min readJan 14, 2020

บทความนี้เพื่อความเข้าใจเริ่มต้นสำหรับผู้เริ่มใช้ Docker

Docker คืออะไร

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

Docker Objects (Image กับ Container องค์ประกอบพื้นฐาน Docker)

Docker File → คือเอกสารบอกสูตร (การใช้งาน และคำสั่ง) เพื่อสร้าง Docker Image นั้นๆ

Docker Image → เป็นแบบแปลนที่จะใช้สร้างเป็น Docker Container ท่ีประกอบไปด้วยแอปพลิเคชันต่างๆที่จะทำงานเมื่อมีการเรียกใช้งานที่ Docker Container นั้นๆ รวมทั้งมีการตั้งค่า จำลองสภาพแวดล้อม (Environment) ที่จำเป็นสำหรับการทำงานของมันไว้ด้วย

Docker Container → เป็นที่บรรจุรวมไว้ทั้งแอปพลิเคชัน, สภาพแวดล้อมที่จำเป็นต่อการทำงาน และองค์ประกอบต่างๆ ที่จำเป็นต่อการทำงานของมัน ซึ่งเราได้สร้างมันมาจาก Docker Image ผ่านการกำหนดโครงสร้างของมันที่ Docker File

3 สิ่งนี้มันเกี่ยวข้องกันแบบชัดๆยังไงนะ

เมื่อเราเขียน Docker File ขึ้นมาแล้ว เราจะสามารถ Build มันเป็น Docker Image ได้ด้วยคำสั่ง

docker build

เมื่อเราได้ Docker Image ขึ้นมาแล้วเราสามารถสร้าง และเรียกใช้งาน Docker Container ได้ด้วยคำสั่ง

docker run

ตอนนี้เราก็ได้รู้ถึงคอนเซ็ปต์พื้นฐานการทำ Docker Container กันแล้ว ไปต่อกันเลยกับคอนเซ็ปต์การทำงานของ Docker

โครงสร้างการทำงานของ Docker

Docker นั้นมีโครงสร้างการทำงานแบบ Client-Server ซึ่งในโครงสร้างของ Docker จะมี Docker daemon เป็นเหมือน Server คอยรอรับการร้องขอการทำงาน หรือ API Request จาก Docker Cli ที่เป็นเหมือน Client ซึ่งสื่อสารกันผ่าน REST API เพื่อจัดการกับ Docker Objects ทั้งหลาย(Images, Containers, Networks, Data volumes)

https://docs.docker.com/engine/docker-overview/

Docker registry เป็นอีกหนึ่งโครงสร้างหลักในการทำงานของ Docker เพราะมันเป็นที่เก็บ Docker Image ทั้งหลายที่ได้มีการสร้างเอาไว้แล้ว

Docker registry จะมีส่วนร่วมในการทำงานเมื่อทาง Docker Cli มีการร้องขอใดๆมา โดยที่ Docker daemon ก็จะรับคำร้องขอนั้นมาจัดการต่อ อย่างเช่น เมื่อมีการสั่ง

docker pull

Docker daemon จะจัดการดึง Docker Image นั้นๆมาตามคำสั่งจาก Docker Cli

และเมื่อมีการสั่ง

docker push

Docker daemon จะจัดการนำ Docker Image ที่เราสร้างไปเก็บไว้ตามค่าที่อยู่ที่เรากำหนด หรือได้มาไว้ใน Docker registry

https://docs.docker.com/engine/docker-overview/

ต่อมาเมื่อ Docker Cli ร้องขอให้โปรแกรมทำงานจาก Docker Container ด้วย

docker run

เจ้า Docker daemon รับคำสั่งมาแล้วไปนำเอา Docker Image ในเครื่อง local server ของเราที่มีอยู่แล้ว หรือถ้าไม่มีมันก็จะไปดึงมาจาก Docker registry มาสร้างเป็น Docker Container แล้วเรียกทำงานบน Docker Container

docker start

Docker daemon จะจัดการเริ่มการทำงานของ Docker Container นั้นๆที่อยู่ใน server เรา

docker stop

Docker daemon จะจัดการหยุดการทำงานของ Docker Container นั้นๆที่อยู่ใน server เรา

มันสะดวก และรวดเร็วยังไง

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

ที่สะดวก และรวดเร็วก็เพราะ

  • Docker ใช้งานได้บนหลายระบบปฏิบัติการ (Windows/Linux/Mac/...)
  • เจ้าตัว Docker ใช้ทรัพยากรในเครื่องที่มันทำงานน้อยกว่า Virtual Machine
  • มันมีขนาดเล็ก ทำให้สามารถใช้งาน และติดตั้งได้สะดวก แม้ต้องย้ายไปติดตั้งที่เครื่องอื่นๆ
  • สามารถช่วยลดปัญหาการทำงานในสภาพแวดล้อมที่ต่างกันได้ (ทำงานบนเครื่องที่เป็นคนละระบบปฏิบัติการ) จากการที่ทำงานใน Docker บน Docker Container เพราะเราสามารถสร้าง Docker Image จาก Docker File ซึ่งมีการกำหนดสภาพแวดล้อมที่เหมาะสมกับการทำงานไว้แล้ว
  • เราสามารถเลือกใช้งาน Docker Image ต่างๆที่มีคนสร้างไว้ได้จาก Docker registry กลางอย่าง Docker Hub ทำให้เราไม่จำเป็นต้องเริ่มทำงานใหญ่ๆจากศูนย์

และนี่คือพื้นฐานในจุดเริ่มต้นที่ควรรู้ และเข้าใจก่อนเริ่มหัดใช้งานเจ้า Docker

รายละเอียด การเขียน Docker File, การสร้างกับการเรียกใช้งาน Docker Image และ Docker Container รวมไปถึงการใช้งานคำสั่งที่สำคัญต่างๆ กับฟังก์ชันที่มีในแต่ละคำสั่ง เพื่อการใช้งาน Docker จะมาอธิบายรายละเอียดและการใช้งานในบทความถัดไปครับ

--

--