Docker เบื้องต้น
Tim Sangster
Software Engineer @ DataCamp
FROM, RUN และ COPY ทำงานร่วมกันผ่านระบบไฟล์
COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh
บางคำสั่งส่งผลต่อคำสั่งที่ตามมาโดยตรง:
WORKDIR: เปลี่ยนไดเรกทอรีทำงานสำหรับคำสั่งที่ตามมาทั้งหมดUSER: เปลี่ยนผู้ใช้สำหรับคำสั่งที่ตามมาทั้งหมดการเริ่มต้นพาธทั้งหมดจาก root ของระบบไฟล์:
COPY /projects/pipeline_v3/ /app/
จะรกรุงรังเมื่อพาธยาว:
COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/
ใช้ WORKDIR แทนได้:
WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
แทนที่จะใช้พาธเต็มทุกครั้ง:
RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh
กำหนด WORKDIR แทน:
WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
แทนที่จะใช้พาธเต็ม:
CMD /home/repl/projects/pipeline/start.sh
กำหนด WORKDIR:
WORKDIR /home/repl/projects/pipeline/
CMD start.sh
คำสั่งที่ override ก็จะรันใน WORKDIR เช่นกัน:
docker run -it pipeline_image start.sh
$$
แนวทางที่ดีที่สุด
Ubuntu -> root โดยค่าเริ่มต้น
FROM ubuntu --> Root user by default
RUN apt-get update --> Run as root
คำสั่ง USER ใน Dockerfile:
FROM ubuntu --> Root user by default
USER repl --> Changes the user to repl
RUN apt-get update --> Run as repl
Dockerfile ที่กำหนดผู้ใช้เป็น repl:
FROM ubuntu --> Root user by default
USER repl --> Changes the user to repl
RUN apt-get update --> Run as repl
จะเริ่มต้น container ด้วยผู้ใช้ repl ด้วย:
docker run -it ubuntu bash
repl@container: whoami
repl
| การใช้งาน | คำสั่งใน Dockerfile |
|---|---|
| เปลี่ยนไดเรกทอรีทำงานปัจจุบัน | WORKDIR <path> |
| เปลี่ยนผู้ใช้ปัจจุบัน | USER <user-name> |
Docker เบื้องต้น