มาเล่น Shipyard 2.0 กัน

Shipyard เป็น Web GUI สำหรับบริการจัดการ Docker Container เรียกได้ว่าเป็นเจ้าแรกๆ ที่ทำ Web GUI ขึ้นมาให้ใช้งานกัน จำได้ว่า Shipyard รุ่นแรกออกมาก็ได้รับความนิยมมาก เพราะสามารถใช้งานได้ทั้ง Web GUI และผ่านทาง REST API แต่ว่ามีการเปลี่ยนแปลงครั้งใหญ่กับตัวโครงการนี้ จนเราต้องมาเรียนกันใหม่เลยทีเดียว ส่งที่เปลี่ยนแปลงได้แก่

  • ตัวโครงการหลักใช้ rethinkdb
  • ออกแบบ UI ใหม่หมด
  • ใช้งานผ่าน Web GUI, REST API และ Shipyard Cli
  • เพิ่ม extension ได้
  • ไม่มี hipache ติดมาให้เหมือนกับรุ่นก่อน

สำหรับท่านที่ใช้ Shipyard 1.0 อยู่แล้วแนะนำให้ใช้ต่อไปครับ สำหรับท่านที่อยากลองของใหม่มาเริ่มติดตั้งกันเลย ผมใช้ Ubuntu 14.04 Sever 64 bit เริ่มจากติดตั้ง Docker กันก่อน โดยใช้ curl-ssh
curl -sSL https://get.docker.com/ubuntu/ | sudo sh

แก้ไข /etc/default/docker ในส่วน DOCKER_OPTS ให้ใช้ tpc 2375 ในการเชื่อมต่อ สำหรับใครที่ใช้ unix socket ก็เพิ่มลงไปได้
DOCKER_OPTS=" --dns 8.8.8.8 --dns 8.8.4.4 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
จากนั้น stop และ start service ของ docker ขึ้นมาใหม่
service docker stop
service docker start
ลองดูว่ามี port tcp 2375 เปิดอยู่หรือเปล่า อาจจะดูจาก netstat ก็ได้ ถ้ามีถือว่าใช้ได้ครับ จากนั้นติดตั้ง shipyard ดังนี้
docker run -d -P --name rethinkdb shipyard/rethinkdb
docker run -d -p 8080:8080 --link rethinkdb:rethinkdb shipyard/shipyard
เปิด browser ไปที่ ip address เครื่องเซิร์ฟเวอร์ของคุณ ของผมเป็น http://172.16.27.18:8080 จะพบหน้า login

ใช้ username ‘admin’ และ password ‘shipyard’ ในการ login คุณจะเข้าสู่หน้าจอ dashboard

กดไปที่ tab Engine เพิ่ม Docker host เข้าไป


คลิกกลับมาที่ tab Container คุณจะพบรายการ container ที่มีอยู่ใน host นั้น

เท่านี้ก็ใช้งานได้แล้ว 🙂 สำหรับการใช้งาน Shipyard สามารถใช้งานได้ทั้ง Web GUI, Shipyard Cli และ REST API การใช้งาน Shipyard Cli จะมี Docker Image ให้บริการอยู่ ชื่อ shipyard/shipyard-cli วิธีการเรียกใช้งานทำได้ดังนี้
docker run --rm -it shipyard/shipyard-cli
หลังจากที่คุณใช้คำสั่ง Docker จะพาเข้าสู่ shipyard cli ก่อนจะสั่งงาน คุณต้อง login ไปยัง shipyard controller ก่อน โดยใช้คำสั่ง shipyard login ดังนี้
>shipyard login
หากคุณต้องการสั่งงานหรือติดตั้ง extension เพิ่มเติมผ่าน cli จะต้องใช้ service key สำหรับ authen เข้าใช้งาน มาลองติดตั้ง load balancing โดยใช้ interlock กัน ต้องเริ่มจาก สร้าง service key กันก่อน โดยใช้คำสั่ง
shipyard add-service-key -d "service key"
created key: 8.J5.Xh6BwEVhSBnnx8lnAkqeKgfKgudS9ne
ออกจาก shipyard cli และใช้ docker ติดตั้ง interlock และเชื่อมเข้ากับ shipyard ดังนี้
docker run -it -p 80:8080 -d ehazlett/interlock -shipyard-url http://172.16.29.13:8080 -shipyard-service-key 8.J5.Xh6BwEVhSBnnx8lnAkqeKgfKgudS9ne
interlock ใช้ env variable ในการลงทะเบียน domain และ config routing ให้กับ container มาลองตัวอย่างง่ายๆ กัน กับ go demo container ใช้ doamin name ชื่อ www.fffee.org ใช้ aliase เป็น fffee.org เราจะใช้คำสั่ง docker ดังนี้
docker run -it -P -d --hostname www.fffee.org -e INTERLOCK_DATA='{"alias_domains": ["fffee.org"], "port": 8080, "warm": true}' ehazlett/go-demo
หลังจากที่ container start ให้ชี้ domain name ไปยัง docker controller หรือทดสอบโดยการแก้ไข /etc/hosts ก็ได้ จากนั้นเปิดเว็บไปที่ http://www.fffee.org จะพบ demo web ของ golang

ลองอีกสักตัวเป็น apache2 เป็น sub domain ชื่อ www2.fffee.org ใช้คำสั่งดังนี้
docker run -it -P -d --hostname www2.fffee.org -e INTERLOCK_DATA='{"alias_domains": ["www2.fffee.org"], "port": 80, "warm": true}' anoochit/apache2
เปิดเว็บไปที่ http://www2.fffee.org จะพบ demo web ของ apache2

พอสนุกสนาน หวังว่าจะเป็นประโยชน์ครับ 🙂