Docker คือ ตอนที่ 4 : Docker (คอนเทนเนอร์) Containers

  1. ทำความเข้าใจกับ Docker Containers
  2. วงจรชีวิต (Life Cycle) ของ Docker Containers
  3. การทำแอพใน Docker Container
  4. การจัดการ 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: คำสั่งนี้ตั้งค่าไดเร็กทอรีการทำงานสำหรับคำสั่งต่อไปนี้ใน Dockerfile
  • COPY package*.json ./: คำสั่งนี้คัดลอกไฟล์ package.json และ package-lock.json จากสภาพแวดล้อมแบบโลคัลของคุณไปยังไดเร็กทอรีปัจจุบันในอิมเมจ Docker (ตามที่ระบุโดยคำสั่ง WORKDIR)
  • RUN npm install: คำสั่งนี้บอกให้ Docker เรียกใช้คำสั่ง npm install ภายในระบบไฟล์อิมเมจของเรา ซึ่งจะติดตั้งการพึ่งพาที่จำเป็นทั้งหมดสำหรับแอปพลิเคชันของเรา
  • COPY . .: คำแนะนำนี้คัดลอกแอปพลิเคชันที่เหลือจากสภาพแวดล้อมในเครื่องของเราไปยังอิมเมจ Docker
  • EXPOSE 3000: นี่เป็นการแจ้ง Docker ว่าแอปพลิเคชันของเราจะทำงานบนพอร์ต 3000
  • CMD [ "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 จึงเป็นทักษะอันล้ำค่าสำหรับการทำแอพ


Docker คืออะไร

Docker คือ ตอนที่ 3 : Docker อิมเมจ (Images)
Docker คือ ตอนที่ 5 : Docker Compose