ความแตกต่างระหว่าง COPY และ ADD ใน Dockerfile

DevOps Aug 23, 2019

ใน Dockerfile จะมีคำสั่ง COPY และ ADD ให้ใช้งานโดยทั้งสองคำสั่งนี้ก็คือ การนำข้อมูลจากไหนสักแห่ง <src> เข้ามายังข้างใน Docker <destination> ของเรา ตัวอย่างการใช้งาน

COPY hom* /mydir/        # เพิ่มไฟล์ที่ชื่อเริ่มต้นด้วย hom ไว้ใน /mydir
COPY hom?.txt /mydir/    # ? แทนด้วยตัวอักษรอะไรก็ได้ 1 ตัว เช่น "home.txt"
ADD hom* /mydir/         
ADD hom?.txt /mydir/     

ดูจากคำสั่งด้านบนคือทำงานแบบเดียวกันเลย อ่าวแล้วความแตกต่างระหว่าง COPY และ ADD มันต่างกันยังไง เรามาดูกัน

COPY

ตามชื่อมันคือการก็อปปี้ไฟล์ หรือโฟลเดอร์จากเครื่องเราไปยังข้างใน Docker ซึ่งมันทำแค่นี้จริงๆ

ADD

ADD นั้นทำงานเหมือน COPY แต่มันมีความสามารถพิเศษเพิ่มขึ้นมาอีก 2 อย่างก็คือ

  • สามารถดาวโหลดไฟล์จาก url ภายนอกมาใส่ใน Docker ได้
  • สามารถแตกไฟล์ .tar แล้วมาใส่ใน Docker ได้
ADD http://example.com/foobar /mydir/
ADD foobar.tar /mydir/

หากคิดอะไรไม่ออกก็ใช้ COPY ไปเลย ADD ผมไม่เคยได้ใช้เลยในสถานการณ์จริง

Arnon Kijlerdphon

IT manager & DevOps @Twin Synergy Co.,Ltd

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.