ในฐานะที่เป็นภาพประกอบโดยปัญหา 684 , export
จะไม่คงอยู่ทั่วทั้งภาพ (อย่าลืมว่าคำสั่ง Dockerfile แต่ละคำสั่งจะสร้างคอนเทนเนอร์ระดับกลางโดยผูกมัดเป็นรูปภาพกลางรูปภาพนั้นจะไม่รักษาค่าที่ส่งออก)
ENV
จะ:
ตัวแปรสภาพแวดล้อมที่ตั้งค่าโดยใช้ENV
จะยังคงมีอยู่เมื่อคอนเทนเนอร์ถูกเรียกใช้จากรูปภาพที่เป็นผลลัพธ์
คุณสามารถดูค่าใช้และเปลี่ยนพวกเขาโดยใช้docker inspect
docker run --env <key>=<value>
ปัญหานี้แสดงให้เห็นด้วย:
RUN export PATH=$PATH:/foo/bar # from directly in builder
เมื่อผมทำมันไม่เคยมีdocker run [img] bash -c 'echo $PATH'
/foo/bar
ลองมัน
สร้าง Dockerfile ใหม่ที่มี:
FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
จากนั้นสร้างมัน ผลลัพธ์ของขั้นตอนสุดท้ายคือ:
Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
---> Running in eb66196b238d
foofoo bazbaz
คุณสามารถดู:
FOO
คงอยู่ผ่านคอนเทนเนอร์กลางขอบคุณENV
คำสำคัญ;
BAR
ไม่คงอยู่ในขั้นตอนต่อไปเนื่องจากexport
คำสั่ง
BAZ
แสดงอย่างถูกต้องเนื่องจากใช้ตัวแปรบนคอนเทนเนอร์เดียวกัน
docker
เช่นrun
มี--env-file
หรือ--env
จะส่งออกตัวแปรเหล่านั้น (โดยอาร์กิวเมนต์ตัวเลือกเหล่านี้) ขออภัยที่ทำให้เกิดความสับสนกับคำตอบเก่า ๆ เช่นนี้ แต่ผู้ค้นหาเว็บเพิ่งแจ้งให้ฉันทราบ คำตอบที่ดี btw.