- เบื้องต้นเกี่ยวกับ Docker
- ทำความเข้าใจกับอิมเมจ (Images) Docker และคอนเทนเนอร์ (Containers)
- การลงทะเบียน (Registries) Docker
- กำลังติดตั้ง Docker
- อินเทอร์เฟซบรรทัดคำสั่ง Docker (CLI)
- ใช้งาน Docker Container แรกของคุณ
- การสร้างไฟล์ Docker
- การสร้างและใช้งาน Docker Container
ในโลกของการทำแอพและไอทีในปัจจุบัน Docker เป็นหนึ่งในเครื่องมือที่สำคัญที่สุดในการทำความเข้าใจและใช้งาน ไม่ว่าคุณจะเป็นนักพัฒนา ผู้ดูแลระบบ หรือแม้แต่ผู้ที่ชื่นชอบเทคโนโลยี การเรียนรู้ Docker สามารถทำให้เวิร์กโฟลว์ในการทำแอพของคุณง่ายขึ้นและทำให้ชีวิตของคุณง่ายขึ้นมาก วันนี้เราจะเจาะลึกเกี่ยวกับพื้นฐานของ Docker และอธิบายวิธีเรียกใช้แอปพลิเคชันแรกภายใน Docker
1. เบื้องต้นเกี่ยวกับ Docker
Docker เป็นแพลตฟอร์มโอเพ่นซอร์สที่ช่วยให้การทำแอพสามารถปรับใช้ ปรับขนาด และจัดการแอปพลิเคชันได้โดยอัตโนมัติ ทำสิ่งนี้โดยใช้การบรรจุคอนเทนเนอร์ซึ่งเป็นรูปแบบเสมือนจริงที่มีน้ำหนักเบา ด้วย Docker คุณสามารถจัดแพ็คเกจแอปพลิเคชันและการอ้างอิงเป็นวัตถุเดียวที่เรียกว่าคอนเทนเนอร์ Docker คอนเทนเนอร์นี้สามารถย้ายและดำเนินการได้อย่างง่ายดายบนระบบใด ๆ ที่ติดตั้ง Docker
2. ทำความเข้าใจกับอิมเมจ (Images) Docker และคอนเทนเนอร์ (Containers)
ก่อนที่เราจะดำดิ่งสู่การเรียกใช้แอปพลิเคชันใน Docker จำเป็นต้องเข้าใจแนวคิดพื้นฐานสองประการของ Docker ได้แก่ อิมเมจ Docker และคอนเทนเนอร์ Docker
- อิมเมจ (Images) Docker: อิมเมจ (Images) Docker เป็นแพ็คเกจปฏิบัติการแบบสแตนด์อโลนน้ำหนักเบาที่มีทุกอย่างที่จำเป็นในการเรียกใช้ซอฟต์แวร์ รวมถึงโค้ด รันไทม์ ไลบรารี ตัวแปรสภาพแวดล้อม และไฟล์กำหนดค่า
- Docker Containers: Docker container เป็นอินสแตนซ์รันไทม์ของอิมเมจ Docker คุณสามารถคิดว่ามันเป็นการทำงานของอิมเมจหรือแพ็คเกจซอฟต์แวร์ กล่าวอีกนัยหนึ่ง อิมเมจ Docker เป็นเทมเพลตที่ใช้สร้างคอนเทนเนอร์ Docker
3. การลงทะเบียน (Registries) Docker
อิมเมจ (Images) Docker มักจะถูกจัดเก็บไว้ในรีจิสทรี Docker รีจิสทรีที่พบบ่อยที่สุดคือ Docker Hub ซึ่งเป็นบริการรีจิสทรีบนคลาวด์ที่ Docker จัดหาให้เอง Docker Hub มีอิมเมจ Docker สาธารณะหลายหมื่นรายการที่สร้างโดยทั้งชุมชนและแหล่งข้อมูลอย่างเป็นทางการของ Docker
คุณยังสามารถมีการลงทะเบียนส่วนตัว ไม่ว่าจะโฮสต์โดย Docker Hub หรือโดยใช้บริการของบุคคลที่สาม หรือแม้กระทั่งโดยการโฮสต์รีจิสทรีในองค์กรของคุณเอง สิ่งนี้มีประโยชน์หากคุณมีภาพส่วนตัวที่คุณไม่ต้องการแชร์กับสาธารณะ
4. กำลังติดตั้ง Docker
ก่อนที่คุณจะเรียกใช้คำสั่ง Docker ได้ คุณต้องติดตั้ง Docker บนเครื่องของคุณก่อน Docker รองรับระบบปฏิบัติการหลักทั้งหมด รวมถึง Windows, MacOS และ Linux สำหรับจุดประสงค์ของคู่มือนี้ เราจะถือว่าคุณได้ติดตั้งและตั้งค่า Docker ไว้ในเครื่องของคุณแล้ว หากไม่มี มีคำแนะนำมากมายทางออนไลน์เพื่อช่วยคุณในการติดตั้ง
5. อินเทอร์เฟซบรรทัดคำสั่ง Docker (CLI)
เมื่อคุณติดตั้ง Docker บนเครื่องแล้ว คุณจะสามารถเข้าถึงฟังก์ชันต่างๆ ผ่าน Docker CLI Docker CLI เป็นอินเทอร์เฟซบรรทัดคำสั่งที่ให้คุณโต้ตอบกับ Docker ได้โดยตรงจากเทอร์มินัลหรือพรอมต์คำสั่ง
ต่อไปนี้เป็นคำสั่ง Docker ทั่วไปบางส่วน:
docker run
: คำสั่งนี้ใช้เพื่อสร้างและเริ่มคอนเทนเนอร์ Docker จากอิมเมจ Dockerdocker ps
: คำสั่งนี้แสดงรายการคอนเทนเนอร์ Docker ที่ทำงานอยู่ทั้งหมดdocker stop
: คำสั่งนี้หยุดการทำงานของคอนเทนเนอร์ Dockerdocker rm
: คำสั่งนี้ลบคอนเทนเนอร์ Dockerdocker pull
: คำสั่งนี้ดึงอิมเมจ Docker จากรีจีสทรี Dockerdocker exec
: คำสั่งนี้อนุญาตให้คุณเรียกใช้คำสั่งในคอนเทนเนอร์ Docker ที่ทำงานอยู่
6. ใช้งาน Docker Container แรกของคุณ
ตอนนี้เราได้กล่าวถึงพื้นฐานแล้ว เรามาดำดิ่งสู่การเรียกใช้แอปพลิเคชันแรกของคุณใน Docker สำหรับบทช่วยสอนนี้ เราจะสร้างข้อความง่ายๆ ว่า “Hello, World!” แอปพลิเคชันโดยใช้ Node.js แล้วทำการคอนเทนเนอร์โดยใช้ Docker
ก่อนอื่นมาทำแอพ Node.js ของเรา สร้างไดเร็กทอรีใหม่ในเครื่องของคุณและนำทางเข้าไป จากนั้น สร้างไฟล์สองไฟล์ภายในไดเร็กทอรีนี้: package.json
และ index.js
.
นี่คือลักษณะของคุณ package.json
ควรมีลักษณะดังนี้:
{
"name": "docker-node-app",
"version": "1.0.0",
"description": "A simple Node.js app using Docker",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "^4.17.1"
}
}
ไฟล์ นี้ package.json
กำหนดแอปพลิเคชัน Node.js และการขึ้นต่อกัน ในกรณีนี้ เรากำลังใช้ไลบรารี Express.js เพื่อสร้างเว็บเซิร์ฟเวอร์อย่างง่าย
ตอนนี้ นี่คือลักษณะ index.js
ไฟล์ของคุณควรมีลักษณะดังนี้:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`App running on http://localhost:${port}`);
});
ไฟล์ นี้ index.js
สร้างเซิร์ฟเวอร์ Express.js อย่างง่ายที่ตอบกลับด้วย “Hello, World!” เมื่อคุณเยี่ยมชม URL รูท
ในการเรียกใช้แอปพลิเคชันนี้ คุณมักจะเรียกใช้ npm install
เพื่อติดตั้งการอ้างอิง จากนั้นจึง npm start
เริ่มเซิร์ฟเวอร์ อย่างไรก็ตาม เราจะเรียกใช้แอปพลิเคชันนี้ภายในคอนเทนเนอร์ Docker ดังนั้นเรามาดำเนินการต่อไป
7. การสร้างไฟล์ Docker
ในการบรรจุแอปพลิเคชัน Node.js ของเรา เราต้องสร้าง Dockerfile Dockerfile เป็นเอกสารข้อความที่มีคำแนะนำทั้งหมดในการสร้างอิมเมจ Docker
ในไดเร็กทอรีเดียวกันกับ your package.json
and index.js
files ให้สร้างไฟล์ใหม่ชื่อ Dockerfile
นี่คือสิ่งที่ Dockerfile ของคุณควรมีลักษณะดังนี้:
# Use the official Node.js runtime as a parent image
FROM node:14
# Set the working directory in the container to /app
WORKDIR /app
# Copy package.json and package-lock.json to the working directory
COPY package*.json ./
# Install the application dependencies
RUN npm install
# Copy the rest of the application to the working directory
COPY . .
# Make port 3000 available outside the container
EXPOSE 3000
# Run the application when the container launches
CMD ["npm", "start"]
Dockerfile นี้เริ่มต้นด้วยอิมเมจ Node.js อย่างเป็นทางการจาก Docker Hub ตั้งค่าไดเร็กทอรีการทำงาน คัดลอกผ่านแอปพลิเคชันและการอ้างอิง แสดงพอร์ตที่จำเป็น และกำหนดคำสั่งเพื่อเรียกใช้แอปพลิเคชัน
8. การสร้างและใช้งาน Docker Container
ตอนนี้เรามีไฟล์ Docker แล้ว เราสามารถสร้างอิมเมจ Docker ของเราได้ ในเทอร์มินัลหรือพรอมต์คำสั่ง นำทางไปยังไดเร็กทอรีที่มี Dockerfile ของคุณและเรียกใช้คำสั่งต่อไปนี้:
docker build -t docker-node-app .
คำสั่งนี้บอกให้ Docker สร้างอิมเมจโดยใช้ Dockerfile ในไดเร็กทอรีปัจจุบัน ( .
) และแท็ก ( -t
) อิมเมจด้วยชื่อ “docker-node-app”
หากการสร้างสำเร็จ คุณควรเห็นข้อความที่ระบุว่าการสร้างสำเร็จและสร้างอิมเมจแล้ว
ในการเรียกใช้คอนเทนเนอร์ Docker ของคุณ ให้ใช้คำสั่งต่อไปนี้:
docker run -p 3000:3000 docker-node-app
คำสั่งนี้บอกให้ Docker เรียกใช้คอนเทนเนอร์จากอิมเมจ “docker-node-app” และแมปพอร์ต 3000 ภายในคอนเทนเนอร์กับพอร์ต 3000 บนเครื่องของคุณ ( -p 3000:3000
)
หากทุกอย่างเป็นไปตามที่คาดไว้ คุณควรเห็นข้อความในเทอร์มินัลว่า “แอปทำงานบนhttp://localhost:3000 ” คุณสามารถไปที่ URL นี้ในเว็บเบราว์เซอร์เพื่อดู Dockerized “Hello, World!” แอปพลิเคชั่นกำลังดำเนินการ!
แม้ว่านี่จะเป็นเพียงตัวอย่างง่ายๆ แต่ความเป็นไปได้ของ Docker ก็แทบจะไร้ขีดจำกัด ด้วย Docker คุณสามารถบรรจุแอปพลิเคชันใด ๆ ก็ได้ไม่ว่าจะซับซ้อนเพียงใด และเนื่องจากคอนเทนเนอร์ Docker สามารถพกพาได้ คุณจึงสามารถเรียกใช้แอปพลิเคชันของคุณบนเครื่องใดก็ได้ที่ติดตั้ง Docker โดยไม่ต้องกังวลเกี่ยวกับความแตกต่างของระบบปฏิบัติการหรือไลบรารี่ที่ติดตั้ง
การเรียนรู้การใช้ Docker อย่างมีประสิทธิภาพสามารถปรับปรุงเวิร์กโฟลว์ของคุณในการทำแอพหรือผู้ดูแลระบบได้อย่างมาก ดังนั้นจงทดลองต่อไป เรียนรู้ต่อไป และไม่นานนัก คุณจะสงสัยว่าคุณทำแอพได้อย่างไรหากไม่มีสิ่งนี้