ย้าย Docker Container ข้าม Cloud Provider
ปัญหาเรื่องการย้าย Application ข้าม Cloud Provider เป็นปัญหาปกติที่ต้องหาทางแก้ไข ซึ่งแต่ละ Cloud Provider มีช่องทางในการบริการที่ต่างกัน เทคโนโลยีต่างกัน เครื่องมือที่ใช้งานก็ต่างกัน เรียกได้ว่าถ้าจะย้าย instance จะทำได้ยากมาก ครั้งนี้จะให้แนวคิดเรื่องการย้าย Container จาก Cloud Provider ค่ายหนึ่งไปยังอีกค่ายหนึ่งหรือจาก Local ไปยัง Cloud Provider ก็ได้ ซึ่งทำได้หลายวิธี
จากภาพแนะนำการย้ายแบบง่ายๆ ผ่าน Docker อย่างเดียวไม่ได้ใช้เครื่องมือใดๆ เพิ่มเติม ถ้าจะให้สะดวกควรมี Orchestration Service อยู่ในแต่ละ Cloud Provider ด้วย ในเบื้องต้นทำความเข้าใจแบบง่ายๆ กันก่อน การทำ Migration ทำได้ 2 แบบ คือ
- Import / Export ไฟล์ Container ทั้งก้อนจาก Local ไปยัง Cloud วิธีนี้จะให้ความสะดวกมากกว่าแต่การสำรองข้อมูลและการย้ายไฟล์ Export จะช้าขึ้นอยู่กับความเร็วของเน็คเวิร์ก
- Push / Pull ให้ Commit Container State ปัจจุบันแล้ว push ขึ้น Docker Registry อาจจะเป็น Docker Hub (Private) หรือ Private Registry ที่ตั้งขึ้นเองก็ได้ จากนั้นค่อยสั่ง pull ไปยัง Cloud Provider ปลายทาง
สำหรับข้อมูลใน hipache ก็ต้องเปลี่ยนตาม เช่น จากเดิมอยู่ใน Local พอย้าย Container เสร็จจะต้องเปลี่ยน record ใน redis ชี้ไปที่ Container ที่อยู่บน Cloud จึงจะ route traffic ไปได้ถูกต้อง หากทำด้วยมือจะช้า ถ้าใช้ Orchestration Service จะเร็วและสะดวกกว่ามาก
วิธีที่ 1 แบบ Export / Import
สั่ง Export ก่อน
sudo docker export mynodeapp > mynodepp-latest.tar
จะได้ filesystem ของ container mynodeapp ในรูปแบบของไฟล์ tar จากนั้นย้ายไฟล์ไปยัง Cloud Provider ปลายทาง แล้วสั่ง Import
cat mynodepp-latest.tar | sudo docker import - mynodepp:version2
docker run -Pd mynodepp:version2
วิธีที่ 2 แบบ Push / Pull
สั่ง Commit State ของ Container ที่กำลังทำงานอยู่
docker commit mynodeapp mynodeapp:version2
สั่ง Tag และ push ไปยัง registry ปลายทาง
docker tag mynodeapp:version2 index.fffee.org/mynodeapp
docker push index.fffee.org/mynodeapp
สั่ง Pull เมื่อต้องการใช้งาน
docker run -Pd index.fffee.org/mynodeapp
ปัญหาเรื่องการย้าย Application ข้าม Cloud Provider เป็นปัญหาปกติที่ต้องหาทางแก้ไข ซึ่งแต่ละ Cloud Provider มีช่องทางในการบริการที่ต่างกัน เทคโนโลยีต่างกัน เครื่องมือที่ใช้งานก็ต่างกัน เรียกได้ว่าถ้าจะย้าย instance จะทำได้ยากมาก ครั้งนี้จะให้แนวคิดเรื่องการย้าย Container จาก Cloud Provider ค่ายหนึ่งไปยังอีกค่ายหนึ่งหรือจาก Local ไปยัง Cloud Provider ก็ได้ ซึ่งทำได้หลายวิธี
จากภาพแนะนำการย้ายแบบง่ายๆ ผ่าน Docker อย่างเดียวไม่ได้ใช้เครื่องมือใดๆ เพิ่มเติม ถ้าจะให้สะดวกควรมี Orchestration Service อยู่ในแต่ละ Cloud Provider ด้วย ในเบื้องต้นทำความเข้าใจแบบง่ายๆ กันก่อน การทำ Migration ทำได้ 2 แบบ คือ
- Import / Export ไฟล์ Container ทั้งก้อนจาก Local ไปยัง Cloud วิธีนี้จะให้ความสะดวกมากกว่าแต่การสำรองข้อมูลและการย้ายไฟล์ Export จะช้าขึ้นอยู่กับความเร็วของเน็คเวิร์ก
- Push / Pull ให้ Commit Container State ปัจจุบันแล้ว push ขึ้น Docker Registry อาจจะเป็น Docker Hub (Private) หรือ Private Registry ที่ตั้งขึ้นเองก็ได้ จากนั้นค่อยสั่ง pull ไปยัง Cloud Provider ปลายทาง
สำหรับข้อมูลใน hipache ก็ต้องเปลี่ยนตาม เช่น จากเดิมอยู่ใน Local พอย้าย Container เสร็จจะต้องเปลี่ยน record ใน redis ชี้ไปที่ Container ที่อยู่บน Cloud จึงจะ route traffic ไปได้ถูกต้อง หากทำด้วยมือจะช้า ถ้าใช้ Orchestration Service จะเร็วและสะดวกกว่ามาก
วิธีที่ 1 แบบ Export / Import
สั่ง Export ก่อน
sudo docker export mynodeapp > mynodepp-latest.tar
จะได้ filesystem ของ container mynodeapp ในรูปแบบของไฟล์ tar จากนั้นย้ายไฟล์ไปยัง Cloud Provider ปลายทาง แล้วสั่ง Import
cat mynodepp-latest.tar | sudo docker import - mynodepp:version2
docker run -Pd mynodepp:version2
วิธีที่ 2 แบบ Push / Pull
สั่ง Commit State ของ Container ที่กำลังทำงานอยู่
docker commit mynodeapp mynodeapp:version2
สั่ง Tag และ push ไปยัง registry ปลายทาง
docker tag mynodeapp:version2 index.fffee.org/mynodeapp
docker push index.fffee.org/mynodeapp
สั่ง Pull เมื่อต้องการใช้งาน
docker run -Pd index.fffee.org/mynodeapp
ความคิดเห็น
แสดงความคิดเห็น