Skip to content
An`s Weblog
Go back

Order of Execution

Tầm quan trọng của thứ tự lệnh trong Dockerfile

Ví dụ thực tế với CentOS và cloud_user

Sai thứ tự dẫn đến lỗi:

FROM centos:latest

USER cloud_user  # cloud_user chưa tồn tại

RUN mkdir /etc/myconf  # không đủ quyền vì đang là cloud_user

RUN echo "setting=prod" > /etc/myconf/conf.cfg

Docker build bị lỗi vì:

1. USER cloud_user: user chưa được tạo ➜ lỗi.

2. mkdir và echo yêu cầu quyền root ➜ permission denied.

Thứ tự đúng

FROM centos:latest

## Tạo user cloud_user trước
RUN useradd -ms /bin/bash cloud_user

## Các thao tác yêu cầu quyền root
RUN mkdir /etc/myconf
RUN echo "setting=prod" > /etc/myconf/conf.cfg

## Chuyển sang người dùng không đặc quyền
USER cloud_user

Docker build thành công vì các thao tác yêu cầu quyền cao được thực hiện trước khi chuyển sang non-root user.

Note

LệnhNên thực hiện khiLưu ý
USERSau cùngSau khi xong lệnh cần root
RUN mkdir, RUN echoKhi còn rootVì ghi vào /etc cần quyền
RUN useraddTrước khi USERTạo user trước khi dùng

Tổng kết


Share this post:

Previous Post
Storage Overview
Next Post
Working with Non-privileged User