Skip to main content

สำหรับตอนนี้เรื่องของ Cloud Native มาแรงมาก ๆ ทำให้การใช้ Container ก็เริ่มจะกลายจะเป็นเรื่องปกติของพวกเราเหล่าเดฟและชาวอินฟ่ากันไปแล้ว แต่การจัดการ Container นั้นก็ไม่ใช่ว่าจะเป็นเรื่องยาก เพราะในตอนนี้ก็มีเครื่องมือที่ใช้ในการจัดการ Container ให้เป็นเรื่องง่ายมีให้เลือกใช้มากมาย

ซึ่งวันนี้แอดจะพามารู้จักกับเครื่องมือจัดการ Container เด็ด ๆ ตัวเต็ง ๆ ที่น่าจะเคยได้ยินชื่อกันมาบ้างนั่นก็คือ Docker และ Podman สองตัวนี้ถูกพูดถึงและมีการใช้งานที่แพร่หลายกันอยู่แล้ว แต่สำหรับใครที่เคยใช้ตัวใดตัวหนึ่งมาก่อนอยากรู้ว่าความแตกต่างในการใช้งานสองตัวนี้ มันแตกต่างกันมั้ย ใช้งานยาก ง่ายแค่ไหน เดี๋ยวเรามาดูไปพร้อมกันในบทความนี้กันเลย !

Docker และ Podman คืออะไร?

Docker คืออะไร?

Docker คือเทคโนโลยีในการจัดการ container ที่ค่อนข้างจะมีการใช้งานมากที่สุด โดยคนส่วนใหญ่ หากคิดถึง container ก็จะนึกถึง Docker เป็นอันดับต้นๆ เนื่องจากมีฟีเจอร์ค่อนข้างครอบคลุม ทำให้การจัดการ container เป็นเรื่องง่าย ตั้งแต่แพ็คแอปให้เป็น image ไปจนถึง Lifecycle ทั้งหมดของ container ได้ 

Podman คืออะไร?

Podman คือเครื่องมือจัดการ container แบบ open-source ที่ทำงานบน Linux ได้โดยตรง แต่ปัจจุบันก็มีตัวติดตั้งสำหรับ Windows มาให้ใช้งานแล้วในเวอร์ชันที่เป็น 4.x ซึ่ง Podman ออกแบบมาเพื่อพัฒนา สร้าง และรัน container ตามมาตรฐานของ Open Container Initiative (OCI) โดยหลักๆ แล้วถือเป็นอีกทางเลือกของ Docker  มีความคล้ายคลึงกันและบางส่วนยังทำงานร่วมกันได้อีกด้วย

โดยจะมาเปรียบเทียบ Step การใช้งานตั้งแต่ต้น

ขั้นตอนการติดตั้ง Docker Desktop

ไปที่เว็บไซต์ Docker (https://www.docker.com/products/docker-desktop/) คลิกปุ่ม “Download Docker Desktop” เลือกเวอร์ชันที่ตรงกับระบบปฏิบัติการของเรา

เมื่อติดตั้งเสร็จเรียบร้อยแล้ว เราก็จะสามารถทำการเปิดโปรแกรม Docker Desktop ขึ้นมา

หลังจากนั้นเราสามารถทำการตรวจสอบการทำงานของ Docker CLI ได้โดยการใช้คำสั่ง

 docker run hello-world เพื่อรัน image สำหรับทดสอบการทำงานของ docker 

ขั้นตอนการติดตั้ง Podman

ไปที่เว็บไซต์ podman (https://podman.io/docs/installation) จะมีคู่มือในการติดตั้ง Podman ใน OS ต่าง ๆ ในสามารถใช้คำสั่งตามคู่มือได้เลย 

เช่น brew install podman ใน macOS หรือ sudo apt-get -y install podman ใน Linux บางตัว หากเป็นบน Windows สามารถดาวน์โหลดตัวติดตั้งได้ที่ลิงก์นี้ https://github.com/containers/podman/releases

หลังจากที่เราได้ทำการ Download และติดตั้งเสร็จเรียบร้อยแล้วให้ทำการเปิด Terminal ขึ้นมาแล้วใช้คำสั่งว่า podman machine init

โดย Podman Machine  เป็นตัวจัดการเครื่องเสมือน (Virtual Machine – VM) ที่ทำหน้าที่สร้างเครื่อง Linux ขนาดเล็ก เพื่อให้เราสามารถรัน containers ได้

โดยคำสั่ง podman machine init เป็นการเริ่มต้นสร้างและตั้งค่า (initialize) VM ของ Podman

สิ่งที่เกิดขึ้น:

  • มันจะดาวน์โหลด VM image ที่เหมาะสม
  • สร้าง File System สำหรับ VM
  • ตั้งค่าการเชื่อมต่อ Network
  • สร้าง SSH Keys เพื่อใช้เข้าถึง VM

ต่อมาใช้คำสั่ง podman machine start เพื่อสตาร์ท VM ของ Podman เพื่อให้พร้อมใช้งาน

สิ่งที่เกิดขึ้น:

  • มันจะ Boot ระบบปฏิบัติการที่อยู่ภายใน VM
  • Config ให้เราสามารถเชื่อมต่อเข้าไปจัดการ containers จากเครื่อง host ได้

หากต้องการใช้ Podman Desktop  ที่เป็น GUI แบบ Docker Desktop ก็สามารถทำการดาวน์โหลด ได้ที่ https://podman-desktop.io/ จะได้โปรแกรมที่หน้าตาเหมือน Docker Desktop เลย

หากต้องการทดสอบการทำงานของ Podman CLI เราก็สามารถใช้คำสั่ง podman run hello-world ได้เหมือนกัน 

สาธิตการใช้งานกับแอปพลิเคชันตัวอย่าง
โปรเจกต์ NodeJS Express

สร้าง Node.JS Express Application:

mkdir my-app
cd my-app
npm init -y
npm install express
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello from my Express app in a container!');
});

app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});

สร้าง Dockerfile

วิธี build image จาก Dockerfile โดยใช้ Docker 

  • ไปที่ directory ที่มี Dockerfile
  • รันคำสั่ง docker build
  • ระบุชื่อ image: docker build -t <ชื่อ image> .

วิธี build image จาก Dockerfile โดยใช้ Podman

  • ไปที่ directory ที่มี Dockerfile
  • รันคำสั่ง podman build
  • ระบุชื่อ image: podman build -t <ชื่อ image> .

วิธีรัน Container โดยใช้ Docker

  • รันคำสั่ง docker run
  • docker run <ชื่อ image>
  • เราสามารถแมป port โดยใช้ -p ได้: docker run -p <port host>:<port container> <ชื่อ image>

วิธีรัน Container โดยใช้ Podman

  • รันคำสั่ง podman run
  • podman run <ชื่อ image>
  • เราสามารถแมป port โดยใช้ -p ได้: podman run -p <port host>:<port container> <ชื่อ image>

ตรวจสอบว่า Container ที่เราสั่งรันมันทำงานจริงหรือป่าว?

เปิดเบราว์เซอร์แล้วเข้า http://localhost:3000 คุณควรจะเห็นข้อความ อันนี้เป็นของที่รันผ่าน Docker

เปิดเบราว์เซอร์แล้วเข้า http://localhost:3001 คุณควรจะเห็นข้อความ อันนี้เป็นของที่รันผ่าน Podman

ตรวจสอบ Container ที่กำลังรันอยู่ผ่านโปรแกรมที่เป็น GUI

บน Docker Desktop 

บน Podman Desktop 

หมายเหตุจะเห็นได้ว่า Container ที่ถูกรันใน Docker จะไม่มาแสดงใน Podman และ Container ใน Podman ก็เช่นกัน

ตรวจสอบ Container ที่กำลังรันอยู่ผ่าน CLI 

Docker ใช้คำสั่ง: docker ps หรือ docker container ls 

Podman ใช้คำสั่ง: podman ps หรือ podman container ls 

หยุด Container

Docker ใช้คำสั่ง: docker stop<ชื่อ Container หรือ Id ของ Container>

ตัวเลือก:

  • docker stop <ชื่อ Container หรือ Id ของ Container> หยุดแบบนุ่มนวล 
  • docker kill <ชื่อ Container หรือ Id ของ Container> บังคับหยุด

Podman ใช้คำสั่ง: podman stop<ชื่อ Container หรือ Id ของ Container>

ตัวเลือก:

  •  podman stop <ชื่อ Container หรือ Id ของ Container>  หยุดแบบนุ่มนวล 
  •  podman kill <ชื่อ Container หรือ Id ของ Container> บังคับหยุด

รายการ Container ทั้งหมดรวมถึงที่หยุดรันไปแล้ว 

Docker ใช้คำสั่ง: docker ps -a หรือ  docker container ls -a 

Podman ใช้คำสั่ง: podman ps -a หรือ  podman container ls -a 

ลบ Container 

Docker ใช้คำสั่ง docker rm <ชื่อ Container หรือ Id ของ Container>

Podman ใช้คำสั่ง podman rm <ชื่อ Container หรือ Id ของ Container>

เรียกดู image ที่มีอยู่ทั้งหมด 

Docker ใช้คำสั่ง docker images

Podman ใช้คำสั่ง podman images

ลบ Image ที่ต้องการ

Docker ใช้คำสั่ง docker rmi <ชื่อ Container หรือ Id ของ Container>

Podman ใช้คำสั่ง podman rmi <ชื่อ Container หรือ Id ของ Container>

จากตัวอย่างการใช้งานจะเห็นได้ว่า Docker และ Podman เป็นเครื่องมือที่ใช้สำหรับจัดการคอนเทนเนอร์ ที่มีความคล้ายคลึงกันมาก แม้กระทั่งคำสั่งต่าง ๆ  แต่ข้อแตกต่างที่สำคัญจะอยู่ที่ 

การเรียกใช้งาน

  • Docker: ต้องใช้ daemon แยกต่างหาก
    Podman: ไม่ต้องใช้ daemon

แต่มีหมายเหตุนิดหน่อย

  • Podman เป็นเครื่องมือใหม่กว่า Docker ยังอยู่ในช่วงพัฒนา คู่มืออาจจะน้อยกว่า
  • Docker เป็นเครื่องมือที่ได้รับความนิยม มีผู้ใช้มากกว่า เนื้อหาต่าง ๆ ก็จะเยอะกว่า

สรุปได้ว่าสำหรับใครที่คุ้นชินกับ Docker อยู่แล้ว สามารถโยกไปใช้ Podman หรือ สลับมาไปมาในการใช้ Docker ได้โดยแทบไม่ต้องปรับตัว แต่ถ้าใครยังไม่เคยคุ้นชิน ผมแนะนำทางเลือกดี ๆ กับคอร์สเรียน Docker & Container Technology จากทาง BorntoDev ที่จะทำให้เราสามารถใช้งาน Docker ในการ สร้าง, จัดการ, และประยุกต์ใช้งาน Container ได้อย่างมั่นใจ

สนใจอ่านรายละเอียดเพิ่มเติมได้ที่

https://school.borntodev.com/course/docker-container-technology

Sirasit Boonklang

Author Sirasit Boonklang

More posts by Sirasit Boonklang

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า