มาลองจัดการ Docker Container ด้วย Portainer กันเถอะ

Withusiri Rodsomboon
InsightEra
Published in
3 min readMar 9, 2020

สวัสดีครับ กลับมาเจอกันอีกแล้ว ในครั้งนี้ผมมีสิ่งดีๆ ที่หลายคนน่าจะกำลังตามหาอยู่มาเล่าให้ฟังครับ

เชื่อว่าเพื่อนๆ หลายคนเคยใช้งาน Docker แล้ว อาจจะประสบปัญหาในการจัดการ Docker Container จำนวนมากในเครื่องเดียวกัน (หรือหลายเครื่อง) เพราะการจัดการกับ Docker Container เหล่านั้นจะต้องจัดการผ่าน command line เพียงอย่างเดียว บางทีมันก็ชวนปวดหัวเหมือนกันนะ

แต่โลกเรามีสิ่งที่เรียกว่า Portainer ครับซึ่งเจ้าตัว Portainer มันถูกสร้างมาเพื่อช่วยให้เราสามารถจัดการกับ Docker Container ได้ง่ายมากยิ่งขึ้นโดยสามารถควบคุมจัดการผ่านทาง GUI ได้เลยไม่ต้องนั่งทุกข์ทรมานกับหน้าต่าง command line เพียงอย่างเดียว

ก่อนจะไปทดลองใช้งาน Portainer นั้น เราต้องเตรียมความพร้อมดังนี้ครับ

  1. Ubuntu 18.04 พร้อมติดตั้ง Docker ให้เรียบร้อย (จริงๆ ใช้ Ubuntu version อื่นได้นะครับ แต่ในบทความนี้ใช้ version 18.04)

สำหรับใครที่ไม่รู้วิธีติดตั้ง Docker สามารถอ่านวิธีการติดตั้ง Docker ได้ที่นี่ครับ

เริ่มต้นใช้งาน Portainer

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

ขั้นแรกให้ทำการสร้าง Directory ไว้สำหรับเก็บข้อมูลของ Portainer โดยใช้คำสั่งดังนี้ครับ

sudo mkdir /opt/portainer_data

จากนั้นเริ่มทำการติดตั้ง Portainer โดยใช้คำสั่งดังนี้ครับ

docker pull portainer/portainer

โดยคำสั่งข้างบนจะทำการ download Docker Image ของ Portainer จากนั้นให้เราใช้คำสั่งนี้เพื่อทำการสร้าง Docker Container จาก Docker Image ที่เราได้ทำการ download มาครับ

docker run -d -p <port>:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer_data:/data portainer/portainer

เลข port เราสามารถตั้งเป็นเลขอะไรก็ได้ตามที่เราสะดวกหรือต้องการครับ (แต่ต้องมั่นใจด้วยว่าในเครื่องของเรานั้นไม่มี service อื่นที่ใช้เลข port นี้) ในกรณีนี้ผมจะใช้เป็น 9000 ครับ

เมื่อทำการสร้าง Docker Container ของ Portainer เรียบร้อยแล้ว ก็ถึงเวลาทดลองใช้งาน Portainer กันแล้วครับ ให้เราทำการเปิด web browser แล้วใส่ url ดังนี้ครับ

http://<ip_address>:9000/

ในส่วนของ ip_address ในบทความนี้จะเป็น localhost ครับ ถ้าใครทดลองทำตามบนเครื่อง host ก็ใส่เป็น ip_address ของเครื่องนั้นๆ ได้เลยครับ

หน้า Portainer ที่เราจะเห็นหลังจากทำการติดตั้ง Portainer และเริ่มใช้งานครั้งแรก

เมื่อเราเข้ามาใช้งาน Portainer ครั้งแรก ระบบจะให้เราทำการตั้ง Username และ Password เพื่อเอาไว้ยืนยันตัวตนในการใช้งานครับ แนะนำว่าให้ตั้ง Password ที่ค่อนข้างปลอดภัยด้วยนะครับ

หน้า Portainer หลังจากที่เราทำการตั้ง Username, Password เรียบร้อยแล้ว

หลังจากที่เราทำการตั้ง Username และ Password เรียบร้อยแล้ว Portainer ก็จะให้เราเลือกว่าเราจะเชื่อมต่อ Docker environment แบบไหน ในทีนี้ให้เราเลือก Local ครับเพราะว่าเราจะทำการควบคุมและจัดการ Docker ภายในเครื่องของเราเอง

เมื่อทำการกด Connect แล้ว เราก็จะเข้าสู่หน้า home ของ Portainer ครับ

หน้า home ของ Portainer

เราจะเห็นว่ามี Endpoints เดียวก็คือ local ซึ่งหมายถึงตัวเครื่องที่ทำการติดตั้ง Portainer ไว้นั่นเอง ให้เราทำการคลิ๊กเข้าไปที่ Endpoints “local” ครับ

หลังจากนั้นเราจะเข้ามาสู่หน้า dashboard ของ Endpoints “local” ครับ

หน้า dashboard ของ Endpoints “local”

ให้เราทดลองกดไปที่คำว่า Container ครับหลังจากนั้นเราจะเข้าสู่หน้าที่แสดง Container ทั้งหมดในเครื่องนี้นั่นเองครับ

หน้าแสดง Container ทั้งหมดในเครื่อง local

เราจะเห็นว่าในตอนนี้ เรามี Container อยู่ 1 Container นั่นก็คือ Container ที่เป็นของตัว Portainer นั่นเองครับ ซึ่งก็จะมีข้อมูลบอกว่า Image ที่ Container นี้ใช้อยู่ คือ Image อะไร Container นี้ถูกสร้างวันไหน

ทั้งนี้ใน Column ที่ชื่อว่า Quick actions ยังมีเมนูที่เอาไว้ใช้สำหรับการดู log, stat ของ Container ตัวนี้ได้และที่สำคัญยังสามารถทำการ Shell เข้าไปที่ Container ดังกล่าวได้ด้วย (ปุ่มสุดท้ายของ Quick actions)

นอกจากนี้ เรายังสามารถคลิ๊กเข้าไปที่ Container นั้นๆ ได้ด้วย ซึ่งจะเป็นหน้าที่แสดงข้อมูลเกี่ยวกับ Container นั้นๆ รวมไปถึง action ต่างๆ ที่เราสามารถทำกับ Container นั้นได้ด้วย

หน้ารายละเอียดของ Container focused_murdock (Container ของ Portainer)

มาลองสร้าง Container ใหม่จาก Portainer กัน

ย้อนกลับมาที่หน้า Container ใหม่อีกครั้ง เราจะเห็นปุ่มที่เขียนว่า Add container ให้เราทำการคลิ๊กที่ปุ่มนี้ เพื่อสร้าง Container ใหม่ขึ้นมาครับ

หน้า Add container

เมื่อเราเข้ามาที่หน้าสำหรับการ Add container ใหม่แล้ว ก็ทำการกรอกข้อมูลดังภาพด้านล่างนี้เลยครับ

ขั้นตอนการสร้าง Container ใหม่

ผมได้ทำการใส่ค่าสำหรับ Container ใหม่ไป 3 ส่วน ส่วนแรกคือ Name ซึ่งจะเป็นชื่อของ Container ที่เรากำลังจะสร้างครับ ในกรณีผมตั้งชื่อ Container นี้ว่า nginx_container_by_withusiri

ส่วนที่สองคือ Images ผมใส่ค่าเป็น nginx:latest ซึ่งจะเป็นการบอก Portainer ว่า Container ที่เรากำลังจะสร้างนั้นให้ไปนำ Docker Image ที่ชื่อว่า nginx:latest จาก docker.io มาใช้งานนั่นเองครับ ซึ่งเราสามารถที่จะเปลี่ยน registry ไปเป็นอย่างอื่นได้ เช่น registry ขององค์กรของเรา เพื่อให้ตัว Portainer นั้นไปเรียกใช้งาน Docker Image จาก registry ขององค์กรเรา

ส่วนสุดท้ายนั้นผมทำการคลิ๊กที่ปุ่มสีเทาๆ ที่เขียนว่า publish a new network port แล้วจึงใส่เลข port 8080 สำหรับ host และ 80 สำหรับ container ซึ่งเป็นการบอก Portainer ว่า Container นี้ จะทำการ mapping port 8080 ของเครื่อง host กับ port 80 ของตัว Container โดยส่วนนี้มีค่าเทียบเท่ากับคำสั่งนึงของการสร้าง Container ผ่าน command line ตามด้านล่างครับ

-p 8080:80

หลังจากนั้นให้คลิ๊กที่ Deploy the container ครับ ก็จะเป็นอันเสร็จพิธีในการสร้าง Container จาก Portainer

หน้า Container หลังจากทำการเพิ่ม Container เข้าไปใหม่

เราจะเห็นว่าในหน้า Container นั้นมี Container ตัวใหม่ที่เราทำการ Deploy ไปเมื่อสักครู่เกิดขึ้นมาพร้อมกับสถานะ running ครับ เมื่อเราทำการทดสอบด้วยการเปิด web browser แล้วใส่ url ดังนี้

http://<ip_address>:8080/

ก็จะเจอหน้า Welcome to nginx นั่นเองครับ เป็นอันว่า nginx Container ที่เราสร้างไปเมื่อสักครู่นั้นสามารถใช้งานได้

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

สำหรับบทความนี้ก็ต้องขอจบลงเพียงเท่านี้ ไว้พบกันใหม่ในบทความหน้าครับ ❤

--

--