Dạng exec của Dockerfile: truyền curl --noproxy * không cần dấu nháy shell
Trong dạng exec, mỗi chuỗi JSON là một đối số. Dấu nháy shell thừa có thể làm thay đổi giá trị mà curl nhận được cho --noproxy.
Trong dạng exec của Dockerfile, mảng JSON đã chính là danh sách đối số:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Ở đây curl nhận --noproxy và * như các đối số riêng biệt. Dấu hoa thị không được mở rộng thành tên tệp vì không có shell lệnh nào diễn giải dạng này.
Đừng đặt tùy chọn và giá trị vào cùng một chuỗi JSON. Cũng đừng thêm dấu nháy đơn nguyên văn vào bên trong chuỗi chỉ vì một ví dụ trên terminal đã dùng chúng để bảo vệ shell. Những ký tự nháy đó có thể trở thành một phần của giá trị được truyền cho chương trình.
Dạng shell có một ranh giới khác: nó thực sự liên quan đến shell, nên các quy tắc về dấu nháy và mở rộng có ý nghĩa ở đó. Một shell tường minh được khởi chạy từ lệnh ở dạng exec sẽ thêm lại ranh giới đó.
Ý nghĩa của --noproxy * trong curl là bỏ qua proxy cho mọi máy chủ. Đó là lựa chọn định tuyến, không phải phép thử định dạng đối số chung. Chỉ dùng nó khi đường đi trực tiếp là chính sách mong muốn. Nếu bạn cần một cách bỏ qua hẹp hơn, hãy cung cấp giá trị tương ứng trong cùng cấu trúc một đối số cho mỗi phần tử.