2015-08-07 40 views
27

Còn một câu hỏi liên kết tượng trưng khác của Docker. Tôi có một loạt các tập tin mà tôi muốn sao chép sang tất cả các bản dựng Docker của tôi. Cấu trúc thư mục của tôi là:Docker theo liên kết tượng trưng bên ngoài ngữ cảnh

parent_dir 
    - common_files 
     - file.txt 
    - dir1 
     - Dockerfile 
     - symlink -> ../common_files 

Trong ví dụ trên, tôi muốn file.txt được sao chép khi docker xây dựng bên trong dir1. Nhưng tôi không muốn duy trì nhiều bản sao của file.txt. Mỗi this link, as of docker version 0.10, công cụ xây dựng docker phải

Làm theo các liên kết trong bên trong thùng chứa để biết hướng dẫn xây dựng ADD.

Nhưng tôi nhận được không có tập tin hoặc thư mục như vậy khi tôi xây dựng với một trong những dòng này trong Dockerfile tôi:

ADD symlink /path/dirname hay ADD symlink/file.txt /path/file.txt

gắn kết tùy chọn sẽ KHÔNG giải quyết nó cho tôi (cross nền tảng...). Tôi đã thử tar -czh . | docker build -t mà không thành công.

Có cách nào để làm cho Docker theo liên kết tượng trưng và sao chép tệp common_files/file.txt vào vùng chứa đã tạo không?

Trả lời

26

Điều đó là không thể và sẽ không được triển khai. Vui lòng xem qua số discussion on github issue #1676:

Chúng tôi không cho phép điều này vì không lặp lại được. Một liên kết tượng trưng trên máy tính của bạn không giống với máy của tôi và cùng một Dockerfile sẽ tạo ra hai kết quả khác nhau. Ngoài ra có các liên kết đến/etc/paasswd sẽ gây ra các vấn đề vì nó sẽ liên kết các tệp lưu trữ chứ không phải các tệp cục bộ của bạn.

+0

Cảm ơn bạn. Có, tôi nhận thấy rằng liên kết trước nhưng tôi nghĩ rằng đó là cho một phiên bản cũ hơn của docker (0.6.1). Có thể đề cập đến loại đăng nhập thay đổi của 0.10 đề cập đến https://github.com/docker/docker/blob/master/CHANGELOG.md#0100-2014-04-08 – Ravi

+0

Ngoài ra nếu "parent_dir" được chọn trong bất kỳ máy tính nào và nếu symlink có đường dẫn tương đối đến "common_files", nó sẽ lặp lại được. – Ravi

+1

Trích dẫn của bạn 'Thực hiện theo các liên kết bên trong vùng chứa của thùng chứa để biết hướng dẫn xây dựng ADD.' có nghĩa là * bên trong các liên kết chứa * được theo sau. Không có trong thư mục ngữ cảnh xây dựng. Trong 'ADD file.txt/dir/file.txt' thư mục' dir' có thể là một liên kết tượng trưng. Các đối số tôi trích dẫn trong câu trả lời của tôi vẫn còn hợp lệ và các liên kết tượng trưng vẫn chưa được theo dõi trong phiên bản mới nhất. Bạn có thể gặp sự cố (liên quan đến độ lặp lại) khi bạn lưu trữ các liên kết tượng trưng trong các hệ thống kiểm soát sửa đổi như * git *. Do đó, vui lòng tham khảo [câu hỏi này] (http://stackoverflow.com/questions/86402/how-can-i-get-git-to-follow-symlinks). – h3nrik

0

Đối với bất kỳ ai khác có vấn đề này, vui lòng see this link. Cá nhân tôi đã chọn giải pháp "xây dựng hình ảnh cơ bản chung" và nó hoạt động rực rỡ.

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