Docker คือ … (เริ่มต้นกับ Docker)
บทความนี้เพื่อความเข้าใจเริ่มต้นสำหรับผู้เริ่มใช้ 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)
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
ต่อมาเมื่อ 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 จะมาอธิบายรายละเอียดและการใช้งานในบทความถัดไปครับ