- Docker Image คืออะไร
- สร้างอิมเมจ Docker แรกของคุณโดยใช้ Dockerfile
- การสร้างและเรียกใช้อิมเมจ Docker
- การพุช (Pushing) Docker Image ไปยัง Registry
การทำความเข้าใจอิมเมจของ Docker เป็นส่วนสำคัญของการเรียนรู้ Docker เทมเพลตแบบอ่านอย่างเดียวเหล่านี้สร้างพื้นฐานของคอนเทนเนอร์ Docker และครอบคลุมทุกสิ่งที่จำเป็นในการเรียกใช้แอปพลิเคชัน เช่น โค้ด รันไทม์ ไลบรารี ตัวแปรสภาพแวดล้อม และไฟล์การกำหนดค่า สำหรับการทำแอพ
1. Docker Image คืออะไร
อิมเมจ Docker เป็นองค์ประกอบสำคัญของการทำงานของ Docker สิ่งเหล่านี้คือภาพรวมของระบบไฟล์ของคอนเทนเนอร์ ด้วยการใช้อิมเมจ Docker การทำแอพสามารถหมุนคอนเทนเนอร์ที่มีทุกสิ่งที่จำเป็นในการเรียกใช้แอปพลิเคชันได้อย่างรวดเร็ว
อิมเมจ (Images) ประกอบด้วยชุดของเลเยอร์แบบอ่านอย่างเดียวที่ซ้อนทับกัน แต่ละเลเยอร์แสดงคำสั่งใน Dockerfile ของ Images ดังนั้น Dockerfile จึงเป็นพิมพ์เขียวสำหรับสร้างอิมเมจ ประกอบด้วยชุดคำแนะนำที่แจ้งให้ Docker ทราบว่า Images ควรมีลักษณะอย่างไรและแอปพลิเคชันจะทำงาน
สถาปัตยกรรมแบบเลเยอร์ของอิมเมจ Docker ช่วยให้สร้างและแชร์อิมเมจได้อย่างมีประสิทธิภาพ เนื่องจากแต่ละเลเยอร์จะถูกแคชไว้ และสามารถใช้ซ้ำได้ในหลายอิมเมจ เมื่อมีการอัปเดตหรือแก้ไข Images จำเป็นต้องอัปเดตเฉพาะเลเยอร์ที่เปลี่ยนแปลงเท่านั้น ซึ่งจะช่วยประหยัดพื้นที่จัดเก็บและเวลาในการอัปโหลด/ดาวน์โหลดเมื่อแบ่งปัน Images
2. สร้างอิมเมจ Docker แรกของคุณโดยใช้ Dockerfile
ในการสร้างอิมเมจ Docker เราใช้ไฟล์ Docker Dockerfile มีชุดคำสั่งที่ใช้โดย Docker daemon เพื่อสร้างอิมเมจ มาทำแอพ Node.js และ Dockerize กัน
ขั้นแรก สร้างไดเร็กทอรีสำหรับโครงการของคุณ:
mkdir my_node_app && cd my_node_app
ตอนนี้ เริ่มต้นแอปพลิเคชัน Node.js ของคุณ:
npm init -y
สิ่งนี้จะสร้างไฟล์ package.json ในไดเร็กทอรีของคุณ ตอนนี้มาติดตั้ง Express:
npm install express --save
จากนั้น สร้างไฟล์ใหม่ที่ชื่อว่า app.js และเพิ่มเนื้อหาต่อไปนี้:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello Docker!');
});
app.listen(port, () => {
console.log(`App running on http://localhost:${port}`);
});
แอปพลิเคชันง่ายๆ ของคุณพร้อมแล้ว มาสร้าง Dockerfile ที่จะอนุญาตให้แอปพลิเคชันนี้ทำงานภายในคอนเทนเนอร์ Docker สร้างไฟล์ชื่อ Dockerfile ที่มีเนื้อหาต่อไปนี้:
# Use the official Node.js 14 image as a parent image
FROM node:14
# Set the working directory in the Docker image
WORKDIR /usr/src/app
# Copy the package.json and package-lock.json files to the new working directory
COPY package*.json ./
# Install the application dependencies inside the Docker image
RUN npm install
# Copy the rest of the application code to the working directory
COPY . .
# Expose port 3000 to have it mapped by Docker daemon
EXPOSE 3000
# Define the command to run the application
CMD [ "node", "app.js" ]
Dockerfile นี้สั่งให้ Docker ทำสิ่งต่อไปนี้:
- เริ่มอิมเมจ Docker
FROMที่มีอยู่ก่อนnode:14นี่เป็นอิมเมจอย่างเป็นทางการ สร้างขึ้นโดยมูลนิธิ Node.js และจะติดตั้ง Node.js และ NPM ไว้ล่วงหน้า - ตั้งค่า
WORKDIRเป็น/usr/src/appสิ่งนี้จะสร้างไดเร็กทอรีภายในอิมเมจ Docker สำหรับเก็บแอปพลิเคชันของเราและตั้งค่าเป็นไดเร็กทอรีการทำงาน COPYและไฟล์ไปยังไดเร็กทอรีการทำงานpackage.jsonใ หม่package-lock.jsonRUNคำสั่งnpm installสิ่งนี้จะติดตั้งการพึ่งพาแอปพลิเคชันของเราในอิมเมจCOPYแอปพลิเคชันที่เหลือของเราไปยังอิมเมจ DockerEXPOSEพอร์ต3000เพื่ออนุญาตการสื่อสารไปยังและจากคอนเทนเนอร์ Docker- ตั้งค่า
CMDให้เรียกใช้แอปพลิเคชันของเราโดยใช้node app.js
3. การสร้างและเรียกใช้อิมเมจ Docker
ตอนนี้คุณสามารถสร้างอิมเมจ Docker โดยใช้คำสั่งต่อไปนี้:
docker build -t my_node_app .
คำสั่งนี้บอกให้ Docker สร้างอิมเมจโดยใช้ Dockerfile ในไดเร็กทอรีปัจจุบัน ( .) และแท็ก ( ) -t ด้วยชื่อ my_node_app Docker จะอ่านไฟล์ Docker ดำเนินการตามคำสั่ง และหากทุกอย่างเป็นไปด้วยดี คุณก็จะมีอิมเมจ Docker ที่พร้อมจะกลายเป็นคอนเทนเนอร์ที่กำลังทำงานอยู่
หากต้องการดูภาพที่คุณเพิ่งสร้างขึ้น ให้ใช้:
docker images
สุดท้าย เรียกใช้แอปพลิเคชันของคุณเป็นคอนเทนเนอร์ Docker:
docker run -p 3000:3000 -d my_node_app
ซึ่งจะบอกให้ Docker เรียกใช้คอนเทนเนอร์ตามmy_node_app อิมเมจ แมปพอร์ตที่เปิดเผย 3000 ของคอนเทนเนอร์กับพอร์ต 3000 ของเครื่องของคุณ และเรียกใช้คอนเทนเนอร์ในโหมดเดี่ยว ( -d)
ตอนนี้คุณสามารถเข้าถึงใบสมัครของคุณได้ที่ http://localhost:3000 คุณควรเห็น “Hello Docker!” แสดง
4. การพุช (Pushing) Docker Image ไปยัง Registry
หลังจากสร้างอิมเมจ Docker แล้ว คุณสามารถแชร์อิมเมจกับผู้อื่นได้โดยส่งไปยังรีจิสตรี Docker เช่น Docker Hub อันดับแรก แท็กอิมเมจด้วยชื่อผู้ใช้ Docker Hub ของคุณ:
docker tag my_node_app:latest yourusername/my_node_app:latest
จากนั้น พุชอิมเมจไปที่ Docker Hub:
docker push yourusername/my_node_app:latest
อย่าลืมแทนที่yourusernameด้วยชื่อผู้ใช้ Docker Hub ของคุณ ตอนนี้ใครก็ตามที่ติดตั้ง Docker สามารถดาวน์โหลดและเรียกใช้แอปพลิเคชันของคุณโดยใช้คำสั่งเดียว
อิมเมจ Docker เป็นวิธีที่มีประสิทธิภาพในการจัดแพ็คเกจแอปพลิเคชันด้วยการพึ่งพาและการกำหนดค่า คู่มือนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับอิมเมจ Docker และแสดงวิธีทำแอพ Dockerized ด้วยแอปพลิเคชัน Dockerized ของคุณ คุณสามารถมั่นใจได้ว่าแอปพลิเคชันจะทำงานเหมือนกัน โดยไม่คำนึงว่าแอปพลิเคชันนั้นถูกปรับใช้ในสภาพแวดล้อมใด ดังนั้นจึงช่วยขจัดปัญหาที่น่าอับอาย “แต่ใช้งานได้กับเครื่องของฉัน”
เมื่อคุณทำงานกับ Docker ต่อไป คุณจะประทับใจกับความสะดวกสบายที่มีให้ Docker ไม่เพียงปรับปรุงการปรับใช้แอปพลิเคชันเท่านั้น แต่ยังเปิดประตูสู่แนวทางปฏิบัติต่างๆ เช่น การปรับขนาดด้วย Docker Compose การประสานกับ Kubernetes และอื่นๆ อีกมากมายในการทำแอพ