
เตาะแตะไปกับ Docker ตอนที่ 5 Docker registry
อยากลองใช้ docker แต่ยังไม่ต้องการนำ image อัปโหลดไปไว้บน docker hub จะทำอย่างไรได้มั้ย ที่นี่มีคำตอบครับ เราสามารถนำ docker image ที่ได้สร้างขึ้นนั้นไปเก็บไว้ในสิ่งที่เรียกว่า Docker registry ซึ่งแบ่งได้เป็น 2 อย่างคือ Public registry อยู่ที่ hub.docker.com เราจะต้องลงทะเบียนเพื่อขอมีบัญชีผู้ใช้จึงจะสามารถอัปโหลด image ไปเก็บไว้ได้ ส่วนอีกอย่างก็คือ Private (Local) registry จะเป็นการสร้างที่เก็บส่วนตัว ที่เก็บของหน่วยงาน ในบทความนี้จะสาธิตทำที่เก็บ image สำหรับทดสอบงาน การใช้งาน Docker public registry ต้องมี user account ที่ cloud.docker.com จะต้อง login ก่อนจึงจะ push image ขึ้นไปได้ เหมือนที่แสดงตัวอย่างไว้ในบล็อก “เตาะแตะไปกับ Docker ตอนที่ 1” $ docker login ตัวอย่างคำสั่ง push ที่ผมนำ image ไปเก็บไว้ $ docker push woonpsu/docsdocker:part1 ซึ่งเรียกใช้จากที่เครื่องใดก็ได้ ด้วยคำสั่ง pull $ docker pull woonpsu/docsdocker:part1 แต่หากเรายังไม่พร้อมที่จะนำ image ไปไว้บนนั้น เราก็ทำ Local registry ไว้ใช้เองไปพราง ๆ ก่อน ทำได้ 2 แบบ คือ 1. Local registry ที่ใช้งานภายในเครื่องของเราเครื่องเดียว 2. Local registry ที่เราเปิดให้เครื่อง client อื่น ๆ เข้ามาใช้ร่วมได้ Local registry แบบที่ใช้งานภายในเครื่องของเราเครื่องเดียว (localhost:5000) ใช้คำสั่งนี้เพื่อเริ่มต้นสร้าง registry container $ docker run -d -p 5000:5000 –restart=always –name myregistry registry:2 จากนั้นเรา pull image สักอัน จาก hub.docker.com เช่น $ docker pull ubuntu:16.04 หลังจากดัดแปลง(ไม่ทำก็ได้)ตามต้องการแล้วก็ใส่ tag localhost:5000/my-ubuntu ดังนี้ $ docker tag ubuntu:16.04 localhost:5000/my-ubuntu $ docker images แล้วก็ push image ไปยัง local registry ซึ่งก็คือ เครื่องที่เรากำลังใช้งาน (localhost) ใช้ port หมายเลข 5000 ดังนี้ $ docker push localhost:5000/my-ubuntu ซึ่งวิธีการเรียกใช้งาน image ที่เก็บไว้นั้น เป็นดังนี้ $ docker pull localhost:5000/my-ubuntu ก่อนไปทำตัวอย่างถัดไปซึ่งเป็นแบบที่ 2 ให้ลบ container ชื่อ myregistry ที่ทดสอบเสร็จแล้ว ที่ต้องลบเพราะว่าใช้ port หมายเลขเดียวกัน หากใช้หมายเลข port ต่างกัน ก็ไม่ต้องลบ $ docker stop myregistry $ docker rm myregistry Local registry แบบที่เราเปิดให้เครื่อง client อื่น ๆ เข้ามาใช้ร่วมได้ (docker-registry.localdomain:5000) เราจะต้องเริ่มต้นที่การกำหนดชื่อเครื่อง ผมสมมติตั้งชื่อว่า docker-registry.localdomain ให้กับ