Docker OS Part 2
เอกสารนี้เป็นเอกสารประกอบการสอนที่ใช้สำหรับวิชา OS ในส่วนเนื้อหาที่เกี่ยวข้องกับ Docker
Tools
Introduction
Install environment
ติดตั้ง environment แล้วมาฟังเนื้อหากันก่อน
ทำการติดตั้งตัวจัดการ internet
2. ทำการติดตั้ง docker image mysql และ word press
Docker Compose คืออะไร
Docker compose นั้นว่าง่ายๆ จะคล้ายๆกับ script คำสั่ง ที่เอาไว้สร้าง container หลายๆอันขึ้นมาพร้อมกัน โดยใช้คำสั่งเดียว ซึ่งปกติเราเวลาจะสร้างเจ้า container จะสร้างจาก image ตัวอย่างเช่น ถ้าจะทดสอบ wordpress เราจะต้องสร้างเจ้า container mysql , container httpd หรือ container nginx หรือ อาจมากกว่านั้นในกรณีที่เป็นโปรเจคอื่นที่ใช้ technology/service เยอะๆ และมันเชื่อมต่อกัน ปัญหาคือเราก็ต้องมาสร้าง container ทีละอัน และทำการ config ทีละอัน อีกที ซึ่งมันจะเสียเวลาอย่างมากเพราะ ปัญหาที่กล่าวมาข้างต้นเลยเกิด docker compose ขึ้นมา คือเราสามารถกำหนดไว้ในไฟล์ docker-compose.yml เลย ว่าใช้ services อะไรบ้าง ตั้งค่าไรบ้าง จากนั้นก็ใช้คำสั่ง run command เจ้า docker-compose โดยใช้คำสั่ง docker-compose up -d แค่บรรทัดเดียว มันก็จะทำการสร้าง container ทุกๆอันให้เราอัตโนมัติ ตามค่า config ที่เราตั้งไว้ ในการใช้งาน docker บางครั้งเราต้องใช้การติดต่อสื่อสารระหว่าง container เพื่อทำการรับส่งข้อมูลในการทำงาน ซึ่งเมื่อเป็นระบบที่ใช้งานจริง จะมี container หลายตัวมาประกอบกันเช่น container จัดการ database, จัดการหน้าเว็บ, จัดการการรับข้อมูลผ่าน sensor ขึ้นไปบนเว็บเป็นต้น เมื่อทำงานพร้อมกันทำให้ต้องคอยควบคุม container หลายตัวพร้อมกันและการทำ docker link และ docker volume จะยุ่งยากในการกำหนดค่าในการทำงาน Docker compose จึงเป็นตัวช่วยในการจัดการงานที่ซับซ้อนให้ง่ายขึ้นโดยการจัดการ container หลายตัวพร้อมกันให้สามารถทำงานร่วมกันได้โดยที่ไม่ต้อง link ให้ยุ่งยาก ซึ่งมักจะทำเป็นตัวจัดการ service ที่จะใช้งานประกอบกัน
Remote container
VScode remote container เป็นส่วนเสริมที่ให้คุณสามารถออกแบบ Docker container ได้อย่างอิสระ โดยที่จะทำการเชื่อมโฟลเดอร์ที่เราทำงานเข้ากับตัว container อัตโนมัติ โดยสามารถตั้งค่าผ่าน devcontainer.json ซึ่งจะเป็นไฟล์ที่คอยกำหนดขั้นตอนการทำงานของตัว docker ทั้งก่อนและหลังการ build โดยภายในจะติดตั้ง libraries, package หรือ runtime เพื่อที่จะพัฒนาหรือออกแบบระบบ
Last updated