Lệnh COPY sao chép các tệp hoặc thư mục từ nguồn và thêm chúng vào hệ thống tệp của docker image.

Hai dạng lệnh COPY

COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"] (this form is required for paths containing whitespace)

Các bước:

  • Tạo một hình ảnh với hướng dẫn COPY
  • Hướng dẫn SAO CHÉP trong Bản dựng nhiều giai đoạn

Tạo một image sử dụng COPY

Dockerfile

FROM nginx:alpine
LABEL maintainer="Collabnix"
COPY index.html /usr/share/nginx/html/
ENTRYPOINT ["nginx", "-g", "daemon off;"]

Hãy tạo tệp index.html

$ echo "Welcome to Dockerlabs !" > index.html

Build Docker image

$ docker image build -t hocdevops/cpy:v1 .

Tạo container từ image

$ docker container run -d --rm --name myapp1 -p 80:80 hocdevops/cpy:v1

Kiểm tra tệp index

$ curl localhost
Welcome to Dockerlabs !

Hướng dẫn COPY trong Multi-stage Build

Dockerfile

FROM alpine AS stage1
LABEL maintainer="Collabnix"
RUN echo "Welcome to Docker Labs!" > /opt/index.html
FROM nginx:alpine
LABEL maintainer="Collabnix"
COPY --from=stage1 /opt/index.html /usr/share/nginx/html/
ENTRYPOINT ["nginx", "-g", "daemon off;"]

Build docker image

$ docker image build -t hocdevops/cpy:v2 .

Tạo một container

$ docker container run -d --rm --name myapp2 -p 8080:80 hocdevops/cpy:v2

Kiểm tra tệp index

$ curl localhost:8080
Welcome to Docker Labs !

LƯU Ý: Bạn có thể đặt tên cho các stage của mình bằng cách thêm AS vào FROM. Theo mặc định, các stage không được đặt tên và bạn có thể tham chiếu chúng theo số nguyên của chúng, bắt đầu bằng 0 cho lệnh FROM đầu tiên. Bạn không bị giới hạn trong việc sao chép từ các stage bạn đã tạo trước đó trong Dockerfile của mình, bạn có thể sử dụng lệnh COPY –from để sao chép từ một image riêng biệt, bằng cách sử dụng tên image ở local, tag có sẵn local hoặc trên Dockerhub.

COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf
5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments