สรุปการเรียนจาก Docker Live — Free Class

Nakorn Rientrakrunchai
T. T. Software Solution
3 min readMay 18, 2024

ปีนี้เริ่มปรับตัวเองให้เปิดการเรียนรู้มากขึ้น และ วันนี้ ได้เข้ามาเรียน Docker Live — Free Class กับโจโจ้ Jumbbox รู้สึกประทับใจเนื้อหาที่สอน ประกอบกับ อจ. ให้ส่งการบ้านด้วย เลยมาเขียนสรุป ใน medium นี้นะครับ ใครสนใจฟังเต็มๆ เชิญที่นี่คับ https://www.facebook.com/Sikiryl/videos/863048312530382/

จากกิจกรรม การทำ input = output นี้ ก็เลย กลายเป็น medium นี้ ขึ้นมาครับ

สรุปคำสำคัญต่างๆ

คือปกติ ผมจะใช้ docker ในจุดประสงค์เพื่อรันมันให้ได้ อย่างเดียว วันนี้ได้เรียน Container Architecture และ Docker Architecture, ได้รู้จัก keywords ต่างๆ ดังนี้ (ผมสรุป แล้วให้ GPT แปลงให้ดูง่ายขึ้นอีกที)

ได้เข้าใจ Architecture มากขึ้น

Note จากที่เรียน

  • Client คือ เครื่องเรา / เครื่องที่ทำหน้าที่ request
  • Server คือ เครื่องที่ทำหน้าที่ response
  • docker cli — command line interface- ช่องทางติดต่อสื่อสาร ด้วยคำสั่ง ภายใน 1 บรรทัด — ช่องทางติดต่อไปยัง docker daemon
  • Docker Host — เครื่องที่ติดตั้ง docker
  • Dockerd — docker daemon — คนที่ทำงานอยู่เบื้องหลัง ไม่จำเป็นต้องมีคนรู้ — API Server
  • Container — การเอามารันให้ใช้งานได้
  • container image = immutable infrastructure = ไม่สามารถเปลี่ยนแปลงได้ = ถ้าจะอัพเวอชั่น สร้างใหม่

ถามตอบ ระหว่างเรียน

Sidecar คืออะไร

  • รัน container ตัวนึง แล้วรันอีกตัว เพื่อ support ตัวหลัก
  • คล้ายๆกับ มอไซ ที่มี ข้างๆอยู่ด้วย

Docker vs Podman

  • Podman จะต่างกับ container คนละ concept
  • เป็น Open platform เหมือนกัน แต่ podman มาจาก redhat
  • Podman ตอนแรกเกิดมา นำเสนอแนวคิด rootless container ของเดิม docker จะ require root เพราะใช้ daemon ตอนทำงาน แต่ปัจจุบัน docker ทำได้แบบ podman แล้ว

เคยเจอศัพท์ registry กับ artifact มันมีความต่างกันไหมครับ

  • artifact คือ ที่เก็บพวกสิ่งของต่างๆ
  • พอดี จดไม่ทัน เลยมาถาม GPT ต่อ ได้ความดังนี้

เเนะนำที่เก็บ image แบบส่วนตัวได้ไหมครับนอกจาก container registry บน gitlab

  • มีเยอะ หลายตัว ลองค้นหาได้ ทั้ง on-prem หรือ managed service
  • nexus เป็น open source ลงจัดการได้ทั้ง container image / lib maven nuget npm ได้ด้วย

Application แบบไหนบ้างครับที่เหมาะกับการมา Run เป็น Container

  • Application ที่มีการ process (คือไม่ใช่ static)
  • ถ้าเป็น static content ไม่ค่อยเหมาะ แต่ก็ เก็บได้, บางคน อธิบายว่า ใช้ manage version แต่ โจโจ้ ไม่ค่อยเห็นด้วย

K8s ใช้เเทน docker เลยไหมครับ

  • คนละอย่างกันครับ K8S = container orchestrator เอาไว้จัดการ container ครับ
  • docker = container platform
  • k8s เราสามารถเลือกลง container runtime ได้ครับ ว่าจะใช้อะไร docker , containerd , kata , cri-o และ อื่น ๆ

สรุปคำสั่ง docker cli เป็นหมวดหมู่

สรุปและอธิบายโดย GPT อีกทีนะคับ

Container Instance Managements

  • docker run: สร้างและเริ่มต้นการทำงานของ Container ใหม่
  • docker start: เริ่มต้นการทำงานของ Container ที่หยุดอยู่
  • docker stop: หยุดการทำงานของ Container
  • docker kill: หยุดการทำงานของ Container โดยการส่งสัญญาณ kill

Monitoring & Troubleshooting

  • docker ps: แสดงรายการ Container ที่กำลังทำงานอยู่
  • docker exec: รันคำสั่งใน Container ที่กำลังทำงานอยู่
  • docker logs: แสดงบันทึกเหตุการณ์ (logs) ของ Container
  • docker pull: ดึง image จาก Docker Registry
  • docker images: แสดงรายการ images ที่มีอยู่ในเครื่อง

Container Images Managements

  • docker rm: ลบ Container ที่หยุดทำงานแล้ว
  • docker rmi: ลบ image ที่ไม่ได้ใช้งาน
  • docker system prune: ลบทรัพยากรที่ไม่ได้ใช้งานทั้งหมด (Container, images, networks และ volumes)
  • docker login: เข้าสู่ระบบ Docker Registry
  • docker build: สร้าง image จาก Dockerfile
  • docker push: ส่ง image ไปยัง Docker Registry

Note เกี่ยวกับการใช้คำสั่งต่างๆ

  • ตอน docker run, ถ้าไม่ได้ตั้งชื่อให้มัน มันจะ random ชื่อขึ้นมาให้
  • exit 0 = ออกอย่างสมบูรณ์
  • kill เหมือนชักปลักออก
  • -f = follow = see realtime log
  • เวลาเกิดปัญหา, ดูตามลำดับ 1. ดู log ก่อน 2.ดูว่ามัน exit ยังไง
  • เราไม่ควรใช้ latest image เพราะเราคาดการเวอชันไม่ได้
  • ควรเลือกใช้ image ที่มีการ verify แล้ว

Image tag name

ให้ GPT ช่วยสรุปให้ดังนี้

Alpine vs Slim

ที่จริง ยังคงสงสัย Alpine and Slim เลยให้ GPT ช่วย compare ให้ ดังนี้

หวังว่าจะมีประโยชน์กับทุกท่านนะครับ, สุดท้าย ขายของให้ โจโจ้, ใครสนใจเรียน DevOps ฟรี สอบ cer ได้, ลองดูอันนี้นะครับ

--

--