- 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.json
RUN
คำสั่ง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 และอื่นๆ อีกมากมายในการทำแอพ