การ Build Docker Image ขึ้นสู่ Registry - แนะนำ Docker Registry ฟรี

         หลังจากที่เราเขียน Dockerfile กันเป็นแล้ว นั่นแปลว่าเราก็จะมี Image เป็นของตัวเองเรียบร้อยแล้ว และเพื่อให้สะดวกในอนาคต เราก็จะส่ง Image นี้ไปเก็บไว้ที่ registry กัน

         Docker Registry ก็คือที่เก็บ docker image ซึ่งทุกคนที่เคยใช้ docker ก็ต้องเคยดึง image จาก Docker Hub กันอยู่แล้ว นอกจากเราจะสามารถสรรหา image และดึงลงมาใช้งานกันได้แล้ว เรายังสามารถส่ง image ของเราขึ้นไปที่ Docker Hub ได้ด้วยนะ

มาเริ่มกันที่ เขียน Dockerfile กันก่อน
ครั้งนี้เราสร้าง image ที่ run java application บน container กัน

Dockerfile
FROM openjdk:8-jdk-alpine
ADD ./discovery-service-1.0-SNAPSHOT.jar /data/springboot-app.jar
ENTRYPOINT ["java","-jar","/data/springboot-app.jar"]

Step 1/3 : ตั้งต้น parent image ด้วย OpenJDK
Step 2/3 : ก็อปไฟล์ *.jar จากเครื่อง host เข้าไปใน container
Step 3/3 : run *.jar

*.jar ไฟล์ที่ใช้เป็น spring boot application ซึ่งสามารถรันได้ทันที ซึ่งผมได้เตรียมไว้ให้แล้ว
Download >> discovery-service-1.0-SNAPSHOT.jar

ลอง build มาทดสอบกันก่อน (ใครขี้เกียจจะข้ามไปเลยก็ได้)

$ docker build -t discovery .
$ docker run -p 8888:8888 discovery

เปิด http://localhost:8888/ ก็ควรจะเห็นอะไรแบบนี้


การเอา Docker Image ขึ้นสู่ Registry

มองหา Registry

         สิ่งที่ต้องเตรียมคือ เราต้องรู้ว่าเราจะเอาของขึ้นไปที่ไหน ซึ่งมีให้เลือกใช้ทั้งแบบ public repository และแบบติดตั้งเป็น local/private repository ขึ้นอยู่กับความสะดวก

         public repository
  • Docker Hub (https://hub.docker.com/) - ตัวนี้ทุกคนน่าจะรู้จักกันอยู่แล้ว ถ้ามี id จะสามารถ สามารถนำขึ้นแบบเปิดเผยสู่สาธารณะได้ฟรี (public) แต่ถ้าอยากใช้ส่วนตัว (private) ก็มีให้ใช้ฟรี 1 ช่อง (เปย์เพิ่มได้)
  • GitLab Container Registry (https://gitlab.com/) - GitLab อาจโด่งดังมาจากการเป็น version control แต่จริงๆ เราสามารถเอา Docker Image ขึ้น repo ได้ด้วย
         private repository
         ตัวอย่างข้างต้น เป็นตัวอย่างที่สามารถใช้ได้ฟรี และยังมีอีกหลายค่ายให้เลือกใช้ทั้งในระดับ test และ enterprise เสียเงินและไม่เสียเงิน ขึ้นอยู่กับ features ครับ

Login Registry 

         เราจำเป็นต้องรู้ URL registry ของแต่ละเว็บ ซึ่งสามารถดูได้จาก document ของเว็บนั้นๆ

WebpageRegistry URL
 Docker Hub https://hub.docker.com/ registry.hub.docker.com
 GitLab https://gitlab.com/ registry.gitlab.com
 Harbor https://demo.goharbor.io/ demo.goharbor.io

ตัวอย่างนี้มาลองใช้ demo จาก Harbor กัน
$ docker login demo.goharbor.io

Build & Push image 

         การ build เพื่อขึ้นสู่ registry มีความแตกต่างจากการ build ธรรมดาเพียงแค่ต้องเพิ่ม URL registry เข้าไปใน tag ด้วย
$ docker build -t demo.goharbor.io/myprojects/discovery .  
         จากนั้นก็ push ด้วยชื่อ tag ได้เลย **ต้องเหมือนกันกับตอน build
$ docker push demo.goharbor.io/myprojects/discovery

hub.docker.com

demo.goharbor.io

gitlab.com


การใช้งาน 

         เมื่อ image ขึ้นสู่ registry แล้วเราจะดูได้จากหน้าเว็บของ Registry ที่เราเอาขึ้นไป แปลว่าเราก็จะสามารถ pull มาใช้งานได้แล้ว
$ docker pull demo.goharbor.io/myprojects/discovery:latest



Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

เรื่องของ ++i กับ i++

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)