- ทำความเข้าใจกับ Docker Containers
- วงจรชีวิต (Life Cycle) ของ Docker Containers
- การทำแอพใน Docker Container
- การจัดการ Docker Containers
Docker ซึ่งเป็นเทคโนโลยีที่โดดเด่นได้รับความนิยมเพิ่มขึ้นในช่วงไม่กี่ปีที่ผ่านมาในฐานะวิธีการที่เชื่อถือได้สำหรับการปรับใช้แอปพลิเคชัน นำเสนอระบบนิเวศที่ครอบคลุมสำหรับการปรับใช้เว็บแอปพลิเคชัน ช่วยให้การทำแอพสามารถจัดแพคเกจแอปพลิเคชันพร้อมกับสภาพแวดล้อมลงในคอนเทนเนอร์ สิ่งนี้ทำให้มั่นใจได้ว่าการทำแอพจะทำงานได้อย่างราบรื่นในทุกสภาพแวดล้อม
หนึ่งในองค์ประกอบพื้นฐานของ Docker คือคอนเทนเนอร์ Docker ก่อนที่เราจะเจาะลึกถึงวิธีสร้างและจัดการแอปพลิเคชันในคอนเทนเนอร์ Docker เรามาเข้าใจแนวคิดของคอนเทนเนอร์ Docker กันก่อน
1. ทำความเข้าใจกับ Docker Containers
คอนเทนเนอร์ Docker เช่นคอนเทนเนอร์ขนส่ง มีทุกสิ่งที่จำเป็นในการเรียกใช้แอปพลิเคชัน ซึ่งรวมถึงโปรแกรมปฏิบัติการ รันไทม์ ไลบรารี ตัวแปรสภาพแวดล้อม และไฟล์การกำหนดค่าของแอปพลิเคชัน คอนเทนเนอร์ถูกสร้างขึ้นจาก Images ที่ระบุเนื้อหาที่ชัดเจน
ตู้คอนเทนเนอร์ได้ปฏิวัติวิธีการปรับใช้แอปพลิเคชันโดยการจัดหาหน่วยซอฟต์แวร์มาตรฐานที่สามารถทำงานบนแพลตฟอร์มใดก็ได้ที่ Docker รองรับ ระดับความยืดหยุ่นและการพกพานี้ทำให้ Docker เป็นเครื่องมือที่ขาดไม่ได้ในสภาพแวดล้อมการพัฒนาสมัยใหม่
2. วงจรชีวิต (Life Cycle) ของ Docker Containers
วงจรชีวิตของคอนเทนเนอร์ Docker ประกอบด้วยการสร้าง สถานะกำลังทำงาน สถานะหยุดชั่วคราว สถานะหยุดทำงาน และการลบออกจากระบบในที่สุด การใช้ CLI (อินเทอร์เฟซบรรทัดคำสั่ง) ของ Docker นักพัฒนาสามารถจัดการวงจรชีวิตและปรับระบบตามความต้องการได้
ตอนนี้เรามาเรียนรู้วิธีทำแอพในคอนเทนเนอร์ Docker และจัดการ
3. การทำแอพใน Docker Container
เมื่อพูดถึงการทำแอพในคอนเทนเนอร์ Docker อิมเมจ Docker เป็นจุดเริ่มต้น อิมเมจเป็นชุดซอฟต์แวร์ปฏิบัติการแบบสแตนด์อโลนที่มีน้ำหนักเบาซึ่งมีทุกสิ่งที่จำเป็นสำหรับการเรียกใช้ซอฟต์แวร์ ในการเรียกใช้แอปพลิเคชันในคอนเทนเนอร์ Docker เราจำเป็นต้องสร้างอิมเมจ Docker สำหรับแอปพลิเคชันนั้น
ลองทำแอพ Node.js อย่างง่ายตามตัวอย่าง
ก่อนอื่น ติดตั้ง Node.js และ npm (Node Package Manager) บนเครื่องของคุณ สร้างไดเร็กทอรีสำหรับโปรเจ็กต์ของคุณ และภายในไดเร็กทอรีนั้น ให้สร้างไฟล์ชื่อ app.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
แอปพลิเคชั่นนี้เป็นเซิร์ฟเวอร์ “Hello World” ที่เรียบง่าย ตอนนี้มาเชื่อมต่อแอปพลิเคชันนี้กัน
ในการสร้างอิมเมจ Docker สำหรับแอปพลิเคชัน เราจำเป็นต้องมีไฟล์ Dockerfile
ในไดเรกทอรีรากของโปรเจ็กต์ ให้สร้างไฟล์ชื่อ Dockerfile
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "app.js" ]
เป็น Dockerfile
ชุดคำสั่งสำหรับ Docker ในการสร้างอิมเมจ Dockerfile ของเราทำสิ่งต่อไปนี้:
FROM node:14
: คำแนะนำนี้บอกให้ Docker ใช้อิมเมจ Node.js 14 อย่างเป็นทางการจาก Docker Hub เป็นอิมเมจพื้นฐานสำหรับแอปพลิเคชันของเราWORKDIR /usr/src/app
: คำสั่งนี้ตั้งค่าไดเร็กทอรีการทำงานสำหรับคำสั่งต่อไปนี้ใน DockerfileCOPY package*.json ./
: คำสั่งนี้คัดลอกไฟล์ package.json และ package-lock.json จากสภาพแวดล้อมแบบโลคัลของคุณไปยังไดเร็กทอรีปัจจุบันในอิมเมจ Docker (ตามที่ระบุโดยคำสั่ง WORKDIR)RUN npm install
: คำสั่งนี้บอกให้ Docker เรียกใช้คำสั่ง npm install ภายในระบบไฟล์อิมเมจของเรา ซึ่งจะติดตั้งการพึ่งพาที่จำเป็นทั้งหมดสำหรับแอปพลิเคชันของเราCOPY . .
: คำแนะนำนี้คัดลอกแอปพลิเคชันที่เหลือจากสภาพแวดล้อมในเครื่องของเราไปยังอิมเมจ DockerEXPOSE 3000
: นี่เป็นการแจ้ง Docker ว่าแอปพลิเคชันของเราจะทำงานบนพอร์ต 3000CMD [ "node", "app.js" ]
: นี่คือคำสั่งที่ Docker จะทำงานเพื่อเริ่มแอปพลิเคชันของเรา
ตอนนี้คุณสามารถสร้างอิมเมจ Docker สำหรับแอปพลิเคชันได้โดยการเรียกใช้ docker build -t my-node-app:1.0 .
ในเทอร์มินัลจากไดเร็กทอรีรากของโปรเจ็กต์ของคุณ
เมื่อสร้างอิมเมจแล้ว คุณสามารถสร้างคอนเทนเนอร์ Docker สำหรับแอปพลิเคชันได้โดยการเรียกใช้ docker run -p 3000:3000 -d my-node-app:1.0
4. การจัดการ Docker Containers
Docker มีคำสั่งมากมายสำหรับจัดการคอนเทนเนอร์ Docker บางส่วนที่พบมากที่สุด ได้แก่ :
- docker ps : คำสั่งนี้แสดงรายการคอนเทนเนอร์ Docker ที่กำลังรันอยู่ทั้งหมด ตัวเลือก นี้
-a
ช่วยให้คุณเห็นคอนเทนเนอร์ทั้งหมด ไม่ใช่แค่คอนเทนเนอร์ที่กำลังทำงานอยู่ - docker stop [container_id] : คำสั่งนี้หยุดการทำงานของ Docker container
- docker rm [container_id] : คำสั่งนี้จะลบคอนเทนเนอร์ Docker ออกจากระบบของคุณ
- docker logs [container_id] : คำสั่งนี้อนุญาตให้คุณดูบันทึกสำหรับคอนเทนเนอร์ Docker
- docker exec : คำสั่งนี้อนุญาตให้คุณเรียกใช้คำสั่งในคอนเทนเนอร์ Docker ที่กำลังทำงานอยู่ ตัวอย่างเช่น
docker exec -it [container_id] /bin/bash
จะเริ่ม bash shell ในคอนเทนเนอร์ของคุณ
การรู้วิธีจัดการคอนเทนเนอร์ Docker เป็นสิ่งสำคัญสำหรับการแก้ไขปัญหา การบำรุงรักษา และการจัดการโดยรวมของแอปพลิเคชันของคุณ
Docker ทำให้การสร้าง การปรับใช้ และการเรียกใช้แอปพลิเคชันสะดวกสบายและมีประสิทธิภาพมากขึ้น คอนเทนเนอร์ Docker โดยแยกแอปพลิเคชันของเราออกเป็นหน่วยมาตรฐานที่แยกจากกัน ตรวจสอบให้แน่ใจว่าพวกมันพกพาสะดวกและสอดคล้องกันในสภาพแวดล้อมที่หลากหลาย ด้วยเหตุนี้ การทำความเข้าใจวิธีการทำแอพและจัดการแอปพลิเคชันภายในคอนเทนเนอร์ Docker จึงเป็นทักษะอันล้ำค่าสำหรับการทำแอพ