Docker คืออะไร
เป็นเครื่องมือที่ช่วย จัดการแพ็คเกจ ขนส่งระบบที่ทำงานอยู่บน Containers ซึ่งใน Docker สามารถที่จะแบกหลายๆ Container ไว้ให้สามารถทำงานพร้อมกันได้ แยกทำงานพร้อมกันได้
ทำไมต้องใช้ Docker
- ใช้งานง่าย ไม่ยุ่งยาก Docker เหมาะสำหรับทุกคนทุกอาชีพ ไม่ว่าจะเป็น DevOps, Programmer, IT Support ก็สามารถใช้งานได้ Pull – Build – Run ก็ได้ระบบที่ต้องการมาใช้งานได้เลย ไม่ต้องมานั่งเสียเวลาติดตั้งที่ละส่วน หรือต้องแก้การตั้งค่าใช้เวลาแก้ไขหลายบรรทัด
- เร็วและเบา ใช้สเปคเครื่องไม่เยอะ ใช้ Docker มาจำลองใช้งานได้ทันทีและตลอดเวลา
- Docker hub มีทุกอย่างทุกระบบ อยากจะจำลอง PHP, Python, Apache airflow ก็แค่ Pull เข้ามาที่เครื่องก็ใช้งานได้ทันที ไม่ต้องสนว่าต้องติดตั้งอะไรบ้างในนั้น
- สามารถสร้างแยก Docker แล้วเอามา Link กันเองได้ภายหลัง ไม่ต้องสร้างหรือจำลองแบบรวมทุกอย่างก็ได้

Containers
จะไม่เหมือนกับการทำ VM แบบเดิมๆ ที่ต้องสร้างทุก OS ขึ้นมาใหม่ทุกครั้งที่จำลอง แต่เป็นการสร้าง Container แยกกันโดยมี Docker engine แค่ที่เดียว แล้วสามารถเชื่อมโยงเชื่อมต่อกันได้
Dockerfile
FROM php:7.4.2-apache-buster
RUN apt-get -y update
EXPOSE 8000
- FROM บอกว่าเราไป Pull docker ชื่ออะไร เวอร์ชั่นอะไร
- ENV เพื่อบอกว่า environment ข้างในจะให้ค่าเป็นอะไร
- RUN ไว้พิมพ์ Command ที่ต้องการเข้าไป เหมือนตอนที่เราต้องการอัพเดต Linux เราก็จะพิมพ์คำสั่ง apt-get update ก็พิมพ์
- EXPOSE 8000 เพื่อเชื่อมกับ Port ที่เราต้องการใช้งานจากภายนอก
- ถ้าอยากรู้คำสั่งเพิ่ม เข้าไปดูได้ที่ลิ้งนี้ https://kapeli.com/cheat_sheets/Dockerfile.docset/Contents/Resources/Documents/index
Docker Image
คือ Image ที่เรา Pull มาใช้งาน ข้างในเราจะแก้ไขอะไรไม่ได้ แต่สามารถสร้างขึ้นมาได้ เพื่อเอาไว้ใช้งานได้ภายหลัง
Volumes
พอมี Image แล้วก็ต้องมี Volumes เพื่อเป็นพื้นที่ในการเก็บไฟล์ต่างๆ

มาลองเล่นกัน
- พิมพ์ docker version เพื่อตรวจสอบเวอร์ชั่นของ Docker
- พิมพ์ docker run -it -d –name test -p 8000:80 -v ~/Develop/test-docker/html:/var/www/html php:7.4-apache เพื่อสร้างคอนเทรนเนอร์ชื่อว่า test และมีพอร์ทที่ภายนอกเป็น 8000 เพื่อเชื่อมต่อภายในที่เป็น 80 และมีสร้างวอลุ่มตามพาร์ทภายนอกไปยังภายใน จากนั้นก็ pull image ที่ชื่อว่า php ที่มีเวอร์ชั่น 7.4-apache
- ลองดูเพิ่มเติมได้จากลิ้งนี้
https://devwl.pl/setting-up-docker-on-windows-for-php-development/
ไว้ว่างๆจะสอน docker-compose
อ้างอิง https://medium.com/free-code-camp/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b