จัดการ Docker ด้วย Portainer

Jedwiwat Santandecha
InsightEra
Published in
3 min readMar 8, 2020
Portainer.io and Docker

ทุกวันนี้ ผมเชื่อว่า Developer ส่วนใหญ่น่าจะรู้จัก Docker และ สามารถใช้งาน Docker ได้ในระดับนึงแล้ว แต่ถ้าใครยังไม่เคยใช้งาน หรือยังไม่รู้จัก Docker ลองไปดูที่ บทความ Docker & Gitlab Repository ง๊ายง่าย เหมาะสำหรับผู้เริ่มต้น นี้ได้เลยจ้า และต่อจากนี้ไปเราจะไปพบกับเครื่องมือที่มีความสามารถในการจัดการ Docker ที่ง่ายที่สุดกัน แท่น แทน แท๊น ซึ่งนั่นก็คือ Portainer เราไปดูหัวข้อในบทความนี้กันดีกว่าว่ามีอะไรบ้าง

  1. Portainer คืออะไร
  2. Portainer ใช้ทำอะไร
  3. เริ่มการติดตั้ง Portainer
  4. ตั้งค่าและใช้งาน Portainer

Portainer คืออะไร

เครื่องมือที่ช่วยเราในการจัดการ Docker ไม่ว่าจะเป็นในเรื่องของการจัดการ Container, Service, Stack, Swarm ซึ่ง Portainer ยังสามารถที่จะ connect Registry ที่เก็บ Docker Image เช่น Gitlab, Docker HUB และอื่น ๆ ซึ่งทำให้มีความยืดหยุ่นในการใช้งาน Docker Image จากที่ต่าง ๆ ได้อีกด้วย

Portainer ใช้ทำอะไร

แน่นอนว่า Portainer ใช้ในการจัดการ Docker ซึ่งเรามักจะใช้ Portainer ในการจัดการ Service, Stack, Swarm เป็นส่วนใหญ่

ซึ่งในบทความนี้จะพูดถึงการติดตั้ง ตั้งแต่แรก ถึง การใช้งานจริงๆ ได้เลยหล่ะ

เริ่มติดตั้ง Portainer เพื่อใช้งาน

ก่อนอื่นใครที่ยังไม่ได้ลง Docker ลองดูที่บทความ ติดตั้ง Docker CE บน Ubuntu 18.04

หลังจากที่เราติดตั้ง Docker เรียบร้อยแล้ว เราก็จะทำการติดตั้ง Portainer เพื่อที่จะได้จัดการเจ้า Docker ของเรา โดยใช้คำสั่งตามด้านล่างนี้เลย

$ docker swarm init --advertise-addr [your-ip-address]
// อย่าลืมเปลี่ยนเป็น ip ของเครื่อง server นะครับ
$ curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml$ docker stack deploy --compose-file=portainer-agent-stack.yml portainer

หลังจากที่ลง Portainer เสร็จแล้ว ให้เราลองเข้า localhost:9000 หรือ ถ้าใครติดตั้งบนเครื่อง server ของตัวเองแล้วก็ให้ลองเข้า http://server-ip:9000 เราก็จะได้หน้าตาการติดตั้งตามด้านล่าง

ตั้งค่า username และ password สำหรับ Admin

จากนั้นให้เราทำการตั้งค่า username และ password สำหรับ Admin เพื่อใช้ในการจัดการ Docker ของเราได้เลย หลังจากนั้นก็จะเจอกับหน้าจอด้านล่าง ซึ่งเป็นอันเสร็จเรียบร้อยสำหรับติดตั้ง Portainer

** ถ้าเข้ามาถึงหน้านี้แล้ว เราจะต้องกดที่ primary เพื่อเข้าไปจัดการ Docker ของเรานะ

การตั้งค่าและวิธีการใช้งาน

เอาหล่ะ เดี๋ยวเราจะไปดูวิธีการตั้งค่ากันดีกว่า

อย่างแรกเลยพอเราเข้ามาถึงแล้ว เราต้องไปตั้งค่าว่า เราจะใช้ Docker Image มาจากที่ไหน ซึ่งในบทความนี้ เราจะใช้ Docker Image จาก Gitlab กันนะครับ

  • ตั้งค่า Container Registry ให้เราไปที่เมนู Registries เราก็จะได้หน้าตาประมาณนี้

หลังจากนั้นให้เรากดที่ Add registry เพื่อทำการเพิ่ม และ ตั้งค่า Gitlab Registry ของเรา เราก็จะได้หน้าตาประมาณนี้ ซึ่งเราจะใช้เป็น Custom registry นะ

จากนั้นให้เราติ๊กเลือก Authentication และใส่ข้อมูลลงไป

Name: GITLAB.COM
Registry URL: https://registry.gitlab.com
Username: username ที่ใช้ login ผ่าน Gitlab.com
Password: password ที่ใช้ login ผ่าน Gitlab.com

หลังจากที่เราได้เพิ่ม Container Registry แล้ว

เราก็จะเห็น GITALB.COM Registry ของเราเพิ่มขึ้นมาแล้ว ซึ่งเราก็สามารถใช้ Docker Image จาก Registry ของ Gitlab ได้แล้ว เย้ๆ

ต่อไปเราจะลองไปสร้าง Docker service เพื่อรัน Docker Image ของเรากัน

ให้เราเลือกที่เมนู Services เราก็จะได้หน้าตาประมาณนี้

จากรูปด้านบนจะเห็นว่า เรามี service อะไรรันอยู่บ้าง และจากนั้นให้กดที่ Add service

หน้าจอการตั้งค่า ของการสร้าง service

** Docker Image ชื่อ raw-data-ui จะเป็นเว็บไซต์ที่รันโดน nginx นะครับ

Name: ชื่อ service ของเรา
Registry: ให้เลือกเป็น GITLAB.COM ที่เราสร้างไว้ในตอนแรก
Image: ให้เราไปดู Docker Image ของเราใน GITLAB.COM ว่ามี URL อะไร ตัวอย่างเช่น insightera/raw-data-ui
Replicas: 1
Port mapping:
— host port ให้ใส่ port ที่จะให้เข้าผ่าน domain
— container port ให้ใส่ port ที่เปิดจาก Docker
** Create a service webhook ส่วนนี้เป็นตัวช่วยให้เราสามารถอัพเดท service ของเราได้อัตโนมัติ โดยทำการยิง POST request มาที่ URL ที่ Portainer สร้างไว้ให้Environment variables: ในส่วนนี้จะเป็นการสร้าง env เพื่อใช้ใน Docker ของเรา ตัวอย่าง เช่น process.env.xxx ของ Nodejs

เมื่อเราตั้งค่าเสร็จแล้ว เราก็กด create the service และเราก็จะเห็น service เรากำลังรันอยู่

สังเกต Scheduling Mode และ replicated ถ้าเป็น 1/1 แสดงว่า service รันสำเร็จแล้ว จากนั้นลองเข้า http://[domain หรือ ip]:[host-port] ก็จะเห็นเว็บของเราแล้วว

ส่วนวิธีการดู webhook url ของ service นั้น ๆ ให้เรากดเข้าไปที่ ชื่อ service ที่เราต้องการ จะได้ผลดังภาพ จะเห็น Service webhook ซึ่งเราก็สามารถที่จะยิง POST request มายัง url ตัวนี้ เพื่ออัพเดท service เราได้เลย

อ่านมาถึงตรงนี้กันแล้ว เราก็น่าจะได้รู้วิธีการใช้งาน Portainer กันแล้วเนอะ เอาหล่ะมาสรุปขั้นตอนการใช้งานแบบสั้น ๆ กันสักนิดนึงก่อน

  • ติดตั้ง Docker
  • ติดตั้ง Portainer
  • ตั้งค่า Container Registry (Docker Image)
  • สร้าง Service
  • เทสโดยการเข้าผ่าน http://[domain หรือ ip]:[host-port]

และสำหรับบทความนี้ก็จะพูดถึง Portainer กันเพียงเท่านี้นะครับบบ บทความหน้าจะเป็นเรื่องอะไร รอติดตามกันนะครับ

ขอบคุณครับ…

References

  1. https://blog.51sec.org/2019/11/portainer-and-docker-usage.html

--

--