2015-10-29 16 views
5

Có cách nào dễ dàng để chuyển đổi một Dockerfile thành tập lệnh Bash để cài đặt tất cả phần mềm trên một hệ điều hành thực không? Lý do là container docker tôi không thể thay đổi và tôi muốn sau đó thay đổi vài điều nếu họ không làm việc ra ngoài.chuyển đổi Dockerfile sang tập lệnh Bash

+0

Bạn có thể chạy các lệnh rằng Dockerfile chạy chính mình. Nhưng bạn không thể "chuyển đổi" hình ảnh dựa trên kịch bản. Nếu bạn không thích cách hình ảnh docker làm việc ra sửa đổi Dockerfile và thử lại? –

Trả lời

1

Tóm lại - không.

Bằng cách phân tích cú pháp Dockerfile bằng công cụ như dockerfile-parse, bạn có thể chạy các lệnh RUN riêng lẻ, nhưng điều này sẽ không sao chép đầu ra của Dockerfile.

Bạn sẽ phải chạy cùng một phiên bản của cùng một hệ điều hành.

Các lệnh ADDCOPY ảnh hưởng đến hệ thống tệp nằm trong không gian tên riêng của nó. Việc chạy các gói bên ngoài vùng chứa này có khả năng phá vỡ hệ thống lưu trữ của bạn. Máy chủ của bạn cũng sẽ có tệp ở những nơi mà hình ảnh vùng chứa sẽ không.

Gắn kết VOLUME cũng sẽ ảnh hưởng đến tệp phụ.

Hình ảnh FROM (có thể lần lượt được tải xuống từ các hình ảnh khác) có thể đã cài đặt các ứng dụng khác.

Viết Dockerfiles có thể là một quá trình chậm nếu có bước cài đặt hoặc tải xuống lớn. Để giảm thiểu điều đó, hãy thử thêm các gói mới làm lệnh RUN mới (để tận dụng bộ nhớ cache) và thêm các tính năng theo từng bước, chỉ tối ưu hóa/nén các lớp khi chức năng hoàn tất.

Bạn cũng có thể muốn sử dụng một cái gì đó như ServerSpec để có được phương pháp tiếp cận TDD cho hình ảnh vùng chứa của bạn và ngăn chặn các hồi quy trong quá trình phát triển.

Tài liệu thực hành tốt nhất here, gotchasoriginal article.

0

bạn có thể cài đặt ứng dụng bên dockerfile như thế này

FROM <base> 

RUN apt-get update -y 
RUN apt-get install <some application> -y 
0

Về cơ bản, bạn có thể tạo một bản sao của hệ thống tập tin một container của Docker sử dụng “xuất khẩu Docker”, sau đó bạn có thể viết thư cho một thiết bị loop:

docker build -t <YOUR-IMAGE> ... 
docker create --name=<YOUR-CONTAINER> <YOUR-IMAGE> 
dd if=/dev/zero of=disk.img bs=1 count=0 seek=1G 
mkfs.ext2 -F disk.img 
sudo mount -o loop disk.img /mnt 
docker export <YOUR-CONTAINER> | sudo tar x -C /mnt 
sudo umount /mnt 

Chuyển đổi vùng chứa Docker thành hình ảnh hệ thống tệp thô.

Thông tin thêm ở đây: http://mr.gy/blog/build-vm-image-with-docker.html

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