Portainer Install
Table Of Content
บทนำ
- สร้าง volume บน docker เพื่อให้ตัว Portainer เอาไว้เก็บของที่มันต้องใช้
- deploy Portainer บน docker
- สร้าง account สำหรับ admin
- เลือก Environment เพื่อรัน docker images
- Deploy docker image ให้รันบน container
สรุป
บทนำ
เมื่อเราทำการพัฒนาซอฟต์แวร์ เราย่อมต้องทำการดีพลอยไปสู่เครื่อง server เพื่อทำการทดสอบ เมื่อทดสอบแล้วก็ย่อมต้องดีพลอย ไปสู่เครื่อง server ของ production ใช่ไหมล่ะครับ นอกจากนั้น หรือบางครั้ง เรายังอาจจะต้องติดตั้ง software บางตัวที่ต้องใช้งานการพัฒนาระบบของเรา เช่น database, message broker เป็นต้น
การดีพลอย web service สมัยใหม่ ก็จะมีการดีพลอยหลายแบบ ตามแต่บริษัทหรือตามแต่ environment จะเอื้ออำนวย แต่เชื่อว่าหลายๆ คนคงเคยได้ยินเทคโนโลยีที่ชื่อว่า container หรือ docker มาบ้างใช่ไหมครับ
คนที่ใช้งาน docker มาบ้างแล้ว อาจจะคุ้นเคยกับการ build image แล้วเอาไป publish ไว้ที่ image registry แล้วจากนั้น เราก็รัน command ของ docker เพื่อทำการติดตั้ง image นั้น ให้มารันที่เครื่อง server ซึ่งง่ายดายและสะดวกมากๆ
วันนี้ผมจะเล่าวิธีการดีพลอย docker container ที่ผมเพิ่งไปเจอมา ชื่อว่า Portainer จริงๆ ก็เป็น opensource ที่มามีนานแล้วแหละครับ ผมเพิ่มไปเจอมาเฉยๆ ด้วยความที่ microservice ที่ผมเขียนๆ ขึ้นมาเนี่ย service มันเยอะเหลือการ ครั้นจะใช้ command พื้นฐานของ docker มารัน มันก็ช้า หรือจะใช้ docker-compose มันก็ไม่ทันใจ เพราะทั้งสองวิธีนี้ ต้องเข้าเครื่อง server ไปดูอยู่ดี เลยมองหา UI ของ docker มาใช้ แล้วก็ไปเจอตัวนี้เข้า อย่ากระนั้นเลยครับ ลองใช้ดูเลยละกัน
การติดตั้ง Portainer ต้องติดตั้งบนเครื่อง server ที่มีการลง docker ไว้ก่อนนะครับ สำหรับวิธีการลง docker นั้น หาอ่านตาม web ได้เลยครับ คนเขียนแยะไป แต่ถ้าต้องการอ่าน concept ของ docker เพิ่มเติม ผมแปะลิงค์ที่ผมเคยเขียน blog ไว้ ที่นี่นะครับ
ทำความรู้จัก Docker ก่อนจะเริ่มใช้มัน เพราะต้องได้ใช้แน่นอน
เอาละครับ เรามาติดตั้ง Portainer กันเลย
1. สร้าง volume บน docker เพื่อให้ตัว Portainer เอาไว้เก็บของที่มันต้องใช้ครับ
docker volume create portainer_data
2. deploy Portainer บน docker
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
จากคำสั่งด้านบนนะครับ เราสั่งให้ docker ดึง docker image ที่ชื่อว่า portainer/portainer-ce เวอร์ชันล่าสุด เอามันรันไว้ที่ docker บน server ที่เราติดตั้งไว้ ซึ่งเราจะ expose port 8000 และ 9443 ออกมา เพื่อให้สามารถ access เข้าไปใช้งานผ่าน port เหล่านี้ได้ และเรามีการอนุญาตให้ Portainer เข้าถึง docker ได้ เพื่อที่จะทำการควบคุม docker ได้นั่นเองครับ
พอรันแล้ว ก็ควรจะได้ผลลัพธ์ประมาณนี้
Unable to find image 'portainer/portainer-ee:latest' locally
latest: Pulling from portainer/portainer-ee
772227786281: Pull complete
96fd13befc87: Pull complete
bd9edf367d7b: Pull complete
Digest: sha256:27386470c5b6a4e739d31a8998ac39908fe4b521c356e0348a36812e2e4c7d95
Status: Downloaded newer image for portainer/portainer-ee:latest
c9689d92c393b75887fb54335c7728586a4b8c51d83c4d6630da705bbf5fe628
เราสามารถ access เข้าไปยัง service Portainer ผ่าน browser ได้ ก็ url นี้ครับ
<https://localhost:9443>
จะสังเกตุว่าเป็น https นะครับ http เฉยๆ เข้าไม่ได้นะ ผมลองอยู่นานเลย
3. สร้าง account สำหรับ admin
เมื่อเข้าผ่าน browser เราจะเจอหน้าเว็บไซต์ ที่ให้เราตั้ง username และ password เพื่อเข้าไปใช้งาน ดังนี้ครับ
เมื่อเรากรอกเสร็จแล้ว มันจะสร้าง user admin ให้เรา และ redirect เราไปที่หน้า dashboard ครับ ที่หน้า quick setup เพื่อให้เราเชื่อมต่อ docker instance กับ Portainer ครับ ในบทความนี้ ผมจะแนะนำวิธีเชื่อมต่อก็ docker บนเครื่องเราเอง แต่ต้องบอกว่า Portainer มันสามารถต่อกับ container กับ server เครื่องอื่นๆ เพื่อทำการควบคุมได้ด้วยนะครับ เดี๋ยวถ้ามีโอกาส ผมจะเขียนบทความมานำเสนอใหม่ครับ
4. เลือก Environment เพื่อรัน docker images
ในตอนนี้ ให้เรากด Get Start ไปก่อนครับ เราจะไปเจอหน้าที่ list environment ของ docker ครับ ซึ่ง default เราจะเจอ environment local หรือก็คือ docker ของเครื่อง server ที่เราติดตั้ง Portainer นั่นแหละครับ ก็ให้เราคลิกที่ local นั้นเลย
5. Deploy docker image ให้รันบน container
เราก็จะมาเจอหน้าจอ dasbboard ของ environment local ดังภาพด้านล่างนี้ครับ จะเห็นว่าพอมันเป็น UI เราก็ดูง่ายขึ้นเยอะละครับ ว่าตอนนี้ docker มีก็container ที่กำลัง run อยู่ มี docker image กี่ตัว ที่เรา pull มาเก็บไว้ สมมติถ้าเราอยากจะดีพลอย container ใหม่ ก็ทำได้เช่นเดียวกันครับ ที่แถบ nav bar ซ้ายมือ คลิกไปที่ menu Containers ครับ
เราจะได้เจอหน้าจอนี้
จากนั้น ให้คลิกที่ปุ่ม Add Contaner ครับ จะเจอ form ดังนี้ครับ
สำหรับหน้า Create Container นะครับ
- Name ให้เราตั้งชื่อ container ครับ อันนี้ เราตั้งอะไรก็ได้ ให้สื่อก็พอ
- Registry เป็นที่ๆ docker image ถูกเก็บไว้ครับ โดย default จะเป็นของ docker hub แต่ถ้าเราจะใช้ private registry อื่นๆ ก็คลิกตรง Advance Mode ได้ครับ
- Image ให้เราใส่ชื่อ image ที่เราต้องการจะดีพลอยครับ
ตัวอย่างนะครับ ผมจะลองติดตั้ง postgresql ดูครับ
เลื่อนลงมาด้านล่าง จะเจอปุ่ม Deploy the container ก็คลิกได้เลยครับ จะใช้เวลาติดตั้งนิดนึงครับ จริงๆ แล้วแต่ความเร็วของ net ด้วย เพราะมันต้อง pull image มาใหม่
เมื่อการดีพลอยเสร็จแล้ว เราก็จะเจอว่ามี container ทีชื่อว่า postgres ถูกรันขึ้นมาครับ
ตรงคอลัมน์ Quick Action เรายังสามารถคลิกเข้าไป ดู log, resource usage หรือแม้แต่ execute เพื่อ access shell ของ container ที่เราสนใจได้นะครับ อะไรที่การ access docker ผ่าน command line ทำได้ ตัว UI เองก็ทำได้เกือบหมดครับ
สรุป
บทความนี้ ผมแนะนำ docker ui ตัวนึงที่ชื่อว่า Portainer ที่ใช้ในการ manage ตัว docker เผื่อว่าบางคนอาจจะไม่คล่อง command line หรือการ access command line เป็นเรื่องยาก และผมก็ได้แนะนำวิธีการติดตั้ง และดีพลอย docker container เบื้องต้นด้วย หวังว่าจะเป็นประโยชน์นะครับ
Reference
https://www.youtube.com/watch?v=iX0HbrfRyvc&ab_channel=NetworkChuck
https://docs.portainer.io/start/install/server/docker/linux