2014-10-28 27 views
37

Tôi đã tạo một vài thư mục khác nhau trên máy chủ của mình vì tôi cố gắng tìm hiểu về Docker chỉ để giữ cho dockerfiles của tôi được sắp xếp. Dockerfile của tôi Tôi chỉ chạy như sau:xây dựng bối cảnh cho hình ảnh docker rất lớn

FROM crystal/centos 
MAINTAINER crystal 

ADD ./rpms/test.rpm ./rpms/ 
RUN yum -y --nogpgcheck localinstall /rpms/test.rpm 

rpm thực của tôi chỉ là 1 GB. Nhưng khi tôi cố gắng làm sudo docker build -t="crystal/test" ., tôi nhận được gửi bối cảnh xây dựng cho Docker daemon 3,5 GB. Có cái gì khác mà tôi không biết khi bạn tiếp tục xây dựng hình ảnh Docker? Bộ nhớ của tôi có tích lũy khi tôi tạo thêm hình ảnh trong các thư mục khác trên máy chủ của tôi không?

Trả lời

91

Trình khách Docker gửi toàn bộ "bối cảnh xây dựng" tới trình nền Docker. Đó là bối cảnh xây dựng (theo mặc định) là toàn bộ thư mục Dockerfile là trong (vì vậy, toàn bộ cây rpms).

Bạn có thể thiết lập tệp .dockerignore để yêu cầu Docker bỏ qua một số tệp. Bạn có thể muốn thử nghiệm nó.

Cách khác, bạn có thể di chuyển rpms thư mục cấp một thư mục ở trên Dockerfile và chỉ liên kết tượng trưng test.rpm vào thư mục của Dockerfile.

+2

Đáng tiếc là có vẻ như liên kết tượng trưng đó là không thể trong trường hợp này kể từ khi 'ADD Lệnh 'không theo các liên kết sym trong quá trình xây dựng. Xem: https://github.com/docker/docker/issues/1676 – JimmidyJoo

+2

'.dockerignore' hoạt động tốt cho tôi! 10x – ItayB

+0

phao cứu sinh! Nhà phát triển Rails: hãy chắc chắn thêm 'tmp'' log' vào '.dockerignore' + các tùy chỉnh khác – equivalent8

8

Tôi đã sửa nó bằng cách di chuyển Dockerfile và docker-compose.yml vào một thư mục con và nó hoạt động tốt. Rõ ràng docker gửi thư mục hiện tại đến daemon và thư mục của tôi là 9 hợp đồng biểu diễn.

1

Trong trường hợp của tôi đó là khi tôi thực hiện với sai -f luận - mà không có đường dẫn đến thư mục nơi nằm Dockerfile

docker build --no-cache -t nginx5 -f /home/DF/Dockerfile /home/DF/ - ngay

docker build --no-cache -t nginx5 -f /home/DF/Dockerfile - sai

0

tôi đã có vấn đề tương tự như freestyler. Tuy nhiên tôi đã xây dựng từ một thư mục một từ bối cảnh của tôi. Vì vậy, các đối số -f là đúng ngữ cảnh không chính xác.

project 
| 
-------docker-dir 

xây dựng từ Docker-dir sau đây là tốt

docker build -t br_base:0.1 . 

xây dựng từ dock-dir sự xây dựng bối cảnh thay đổi. Vì vậy, tôi cần phải thay đổi ngữ cảnh trong lệnh. Bối cảnh được đưa ra bởi '.' trong lệnh trên.

Các lệnh mới từ thư mục dự án phải được

docker build -t br_base:0.1 ./base 

Bối cảnh ở đây được đưa ra bởi các './base'

Các vấn đề liên quan