ความแตกต่างระหว่าง COPY และ ADD ใน Dockerfile23 August 2019DevOps

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

ใน 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 ผมไม่เคยได้ใช้เลยในสถานการณ์จริง

ก่อนหน้า
ถัดไป