Nếu ý bạn là muốn chạy một lệnh cụ thể trong Dockerfile, bạn có thể sử dụng chỉ thị RUN
. Chỉ thị RUN
trong Dockerfile được sử dụng để thực thi các lệnh trong quá trình xây dựng image.
Ví dụ, giả sử bạn muốn chạy một lệnh đơn giản là in ra “Hello, World!” trong quá trình xây dựng image. Bạn có thể thêm dòng sau vào Dockerfile của bạn:
RUN echo "Hello, World!"
Khi bạn chạy lệnh docker build để xây dựng image từ Dockerfile, lệnh echo “Hello, World!” sẽ được thực thi trong quá trình xây dựng. Kết quả của lệnh này sẽ không được hiển thị trực tiếp trên Terminal hoặc Command Prompt, nhưng nó sẽ xuất hiện trong quá trình xây dựng image.
Lệnh RUN có thể được viết dưới hai dạng:
- RUN (shell form)
- RUN [“executable”, “param1”, “param2”] (exec form)
Các bước
- Tạo một image với hướng dẫn RUN
- Kết hợp nhiều lệnh RUN thành một
Tạo một image với RUN
FROM alpine:3.9.3 LABEL maintainer="hocdevops" RUN apk add --update RUN apk add curl RUN rm -rf /var/cache/apk/
Build image Docker
$ docker image build -t run:v1 .
Kiểm tra layer của image
$ docker image history run:v1 IMAGE CREATED CREATED BY SIZE NT 5b09d7ba1736 19 seconds ago /bin/sh -c rm -rf /var/cache/apk/ 0B 192115cc597a 21 seconds ago /bin/sh -c apk add curl 1.55MB 0518580850f1 43 seconds ago /bin/sh -c apk add --update 1.33MB 8590497d994e 45 seconds ago /bin/sh -c #(nop) LABEL maintainer=Collabnix 0B cdf98d1859c1 4 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B <missing> 4 months ago /bin/sh -c #(nop) ADD file:2e3a37883f56a4a27… 5.53MB
Số layer là 6
Kiểm tra kích thước image
$ docker image ls run:v1 REPOSITORY TAG IMAGE ID CREATED SIZE run v1 5b09d7ba1736 4 minutes ago 8.42MB
Image nặng 8,42 MB
Kết hợp nhiều lệnh RUN thành một
FROM alpine:3.9.3 LABEL maintainer="hocdevops" RUN apk add --update && \ apk add curl && \ rm -rf /var/cache/apk/
Build Docker image
$ docker image build -t run:v2 .
Kiểm tra layer của image
$ docker image history run:v2 IMAGE CREATED CREATED BY SIZE NT 784298155541 50 seconds ago /bin/sh -c apk add --update && apk add curl… 1.55MB 8590497d994e 8 minutes ago /bin/sh -c #(nop) LABEL maintainer=Collabnix 0B cdf98d1859c1 4 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B <missing> 4 months ago /bin/sh -c #(nop) ADD file:2e3a37883f56a4a27… 5.53MB
Số layer là 4
Kiểm tra image size
$ docker image ls run:v2 REPOSITORY TAG IMAGE ID CREATED SIZE run v2 784298155541 3 minutes ago 7.08MB
bây giờ là 7,08MB