2015-10-03 19 views
5

Chúng tôi có thể tạo hình ảnh Docker và tất cả đẩy chúng vào Hub mà không có Dockerfile. Tại sao nó hữu ích, để có một Dockerfile? Ưu điểm của nó là gì? Việc tạo Dockerfile là một quá trình có mức tiêu thụ thời gian cao và chỉ có thể được thực hiện bởi một con người. Tôi muốn biết sự khác biệt chính giữa hình ảnh dựa trên cơ sở, hình ảnh được cam kết và hình ảnh dựa trên Dockerfile.Ưu điểm của Dockerfile

+0

Bản sao có thể có của [Dockerfile hoặc Registry? Chiến lược ưa thích để phân phối là gì?] (Http://stackoverflow.com/questions/18029045/dockerfile-or-registry-which-is-the-preferred-strategy-for-distribution) –

Trả lời

3

Dockerfile được sử dụng để tự động hóa công việc bằng cách chỉ định tất cả các bước mà chúng tôi muốn trên hình ảnh đế.

Dockerfile là tài liệu văn bản chứa tất cả lệnh mà người dùng có thể gọi trên dòng lệnh để lắp ráp hình ảnh. Sử dụng docker người dùng xây dựng có thể tạo bản dựng tự động thực hiện một số hướng dẫn dòng lệnh liên tiếp.

có, chúng tôi có thể tạo hình ảnh Docker nhưng mỗi khi chúng tôi muốn thực hiện bất kỳ thay đổi nào thì bạn phải thay đổi thủ công và kiểm tra và đẩy nó.

hoặc nếu bạn sử dụng Dockerfile với dockerhub thì nó sẽ tự động xây dựng lại và thay đổi mọi sửa đổi và nếu có điều gì đó sai thì việc xây dựng lại sẽ không thành công.

Ưu điểm của Dockerfile

  • Dockerfile là kịch bản tự động của hình ảnh Docker
  • thủ công tạo hình ảnh sẽ trở nên phức tạp khi bạn muốn kiểm tra cùng một thiết lập trên hương vị OS khác nhau sau đó bạn phải tạo hình ảnh cho tất cả hương vị nhưng bằng cách thay đổi nhỏ trong dockerfile bạn có thể tạo hình ảnh cho hương vị khác nhau
  • nó có cú pháp đơn giản cho hình ảnh và thực hiện nhiều thay đổi tự động sẽ tốn nhiều thời gian hơn khi thực hiện thủ công.
  • Dockerfile có bước có hệ thống có thể được người khác hiểu một cách dễ dàng và dễ dàng để biết cấu hình chính xác nào được thay đổi trong hình ảnh cơ bản.

Advantage của Dockerfile với dockerhub

  • Docker Hub cung cấp kho lưu trữ riêng cho Dockerfile.
  • Dockerfile có thể chia sẻ giữa nhóm và tổ chức.
  • hình ảnh tự động xây dựng
  • Webhooks được gắn vào kho của bạn cho phép bạn kích hoạt một sự kiện khi một hình ảnh hoặc cập nhật hình ảnh được đẩy lên kho
  • chúng ta có thể đưa Dockerfile trên Github hay Bitbucket

Sự khác nhau giữa hình ảnh cam kết và Dockerfile ảnh

hình ảnh cam kết: nó cam kết thay đổi tệp hoặc cài đặt của vùng chứa thành hình ảnh mới.

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 
Create a new image from a container's changes 

    -a, --author=  Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change=[]  Apply Dockerfile instruction to the created image 
    --help=false  Print usage 
    -m, --message=  Commit message 
    -p, --pause=true Pause container during commit 

Đây là lựa chọn tốt để chứa debug và xuất khẩu thay đổi cài đặt vào một Docker image.but đề nghị sử dụng dockerfile see here hoặc chúng ta có thể nói rằng cam kết là phiên bản của Docker hoặc sao lưu các hình ảnh.

Thao tác cam kết sẽ không bao gồm bất kỳ dữ liệu nào chứa trong tập hợp được đặt bên trong vùng chứa.

Theo mặc định, vùng chứa được cam kết và các quá trình của nó sẽ bị tạm dừng khi hình ảnh được cam kết. Điều này làm giảm khả năng gặp sự cố dữ liệu trong quá trình tạo cam kết . Nếu hành vi này không mong muốn, hãy đặt tùy chọn ‘p’ thành false.

Dockerfile dựa image:

nó luôn luôn sử dụng hình ảnh cơ sở cho việc tạo hình ảnh mới. giả sử nếu bạn thực hiện bất kỳ thay đổi nào trong dockerfile thì nó sẽ áp dụng tất cả các bước dockerfile trên hình ảnh mới và tạo ra hình ảnh mới. nhưng cam kết sử dụng cùng một hình ảnh.

Quan điểm của mình là sử dụng dockerfile có tất cả các bước mà chúng ta muốn trên ảnh nhưng nếu chúng ta tạo ảnh từ commit thì chúng ta phải ghi lại tất cả thay đổi mà chúng ta đã thực hiện. và có thể nói dockerfile là một tài liệu về hình ảnh.

+0

** Câu hỏi **: Nếu tôi đẩy một phiên bản mới của hình ảnh của tôi vào Docker Hub, bạn có nên viết lại 'Dockerfile' để phản ánh những thay đổi đó không? Mối quan tâm của tôi là nếu ai đó kéo 'Dockerfile' từ repo Github của tôi, họ có thể không nhận được phiên bản cập nhật nhất của hình ảnh. – chipoglesby

2

Lợi thế là, ngay cả khi bạn không có một đăng ký hình ảnh được chia sẻ mà bạn có thể đẩy hình ảnh của bạn, bạn vẫn có thể trao đổi hình ảnh đã nói với một "công thức" (Dockerfile used by docker build), mà chỉ là một vài KB văn bản và có thể được truyền đi rất dễ dàng (nhẹ và nhỏ).

Định dạng khai báo đó đảm bảo rằng bạn sẽ có thể tạo lại hình ảnh giống hệt và cho phép kết quả có thể tái sản xuất.

+1

Thêm vào VonC: Có Dockerfile cho phép bạn xác nhận những gì bạn nhận được (để mở rộng một số). Bạn không nên tin tưởng mọi hình ảnh trên hub docker. – christian

0

Docker cam

Sử dụng Docker cam kết tiếp cận lệnh để tạo ra hình ảnh mới là dễ bị lỗi, một cần phải nhớ và hình ảnh cập nhật cho những thay đổi nhỏ và cam kết mỗi lần.

Dockerfile

  • Dockerfile cung cấp khả năng tự động hóa tất cả các bước với bộ của Chỉ thị mà được thực hiện trong quá trình xây dựng (tham khảo Docker build lệnh) để tạo ra hình ảnh cuối cùng cùng với cam kết của hình ảnh.

  • Dockerfile được sử dụng ở mọi nơi, mọi thứ được định cấu hình và sẵn sàng để chạy.

  • Dockerfile có thể được chia sẻ với người khác và được người khác cập nhật dễ dàng. Nó cho phép thay đổi hình ảnh dễ dàng tùy theo yêu cầu dễ dàng như bảo mật cứng, thêm hoặc cập nhật chi tiết người dùng, v.v.