Source Code เมื่อพัฒนามากขึ้น จำเป็นต้องมี Environment ที่เหมาะสมเพื่อให้ทำงานได้ เช่น เวอร์ชั่นของ library, สิทธิของโปรแกรม, รวมถึงเรื่องอื่นๆ ทำให้หลายๆ ครั้งเราอาจจะพบกับปัญหาการทำงานร่วมกันภายในทีม เนื่องจาก Souce Code รันได้จากเครื่อง A อาจจะใช้ไม่ได้กับเครื่อง B เป็นต้น
Containerization
เกิดมาเพื่อแก้ไขปัญหาดังกล่าว โดยดึงศักยภาพบางส่วนของ Virtualization มาใช้ แต่ทำให้ขนาดเล็กลง และใช้งานได้ง่ายขึ้นเพื่อการ Automation
Docker
คือ Containerization ตัวหนึ่งที่ทำหน้าที่จำรอง environment ที่เหมาะสมให้กับ Souce Code เพื่อใช้งาน โดยตัว Docker นั้นมีโครงสร้างพื้นฐานประกอบไปด้วย 4 ส่วน ได้แก่
1) Docker Image ทำหน้าที่เป็นส่วนเก็บชุดคำสั่งสำหรับการจำรอง environment ที่เหมาะสม ซึ่งเกิดจากการลง build รายละเอียดคำสั่งจาก Dockerfile
2) Docker Container คือตัว docker image ที่ถูกนำมาเปิดใช้งาน จำรอง environment บน docker host เช่น เรามี image ที่ทำหน้าที่เป็น nginx web server เมื่อเรา build image ตัวดังกล่าว เราจะได้ container หนึ่งตัวมาใช้งานบนเครื่อง
3) Docker Host & Docker Daemon คือส่วนของเครื่องที่ติดตั้ง Docker เอาไว้ โดยตัว Deamon คือ core กลางสำคัญสำหรับการรับคำสั่งต่างๆ จากนักพัฒนา เช่น docker build, docker pull, docker run เป็นต้น
4) Docker Registry คือส่วนที่เก็บและกระจาย docker image ที่ได้จากนักพัฒนาหรือองค์กรต่างๆ ซึ่งโดยปกติเมื่อสร้าง image เสร็จบน local environment และอยากให้คนในทีมได้ใช้ image ตัวดังกล่าว จะต้องนำมาเก็บไว้บน registry
Reference & Credit:
- image:
- https://docs.docker.com/engine/images/architecture.svg
- https://www.docker.com/wp-content/uploads/2021/11/docker-containerized-appliction-blue-border_2.png
- https://miro.medium.com/max/1400/0*D4DUZT7y-JD2qyWP.png
- https://miro.medium.com/max/748/1*OvIY-LZD4Y-edFTI8J5ZrQ.jpeg
- https://nickjanetakis.com/assets/blog/dockers-architecture-6c296cdac053f794eabed5ddda5c04ba7110c746687a0e8b88ba6df919415175.jpg
Top comments (0)