Sự khác biệt giữa đăng ký Docker và kho lưu trữ


147

Tôi bối rối về sự khác biệt giữa đăng ký docker và kho lưu trữ. Có vẻ như tài liệu Docker sử dụng hai từ thay thế cho nhau. Ngoài ra, các kho lưu trữ đôi khi được gọi là hình ảnh, chẳng hạn như tài liệu này từ tài liệu của họ:

Để đẩy một kho lưu trữ đến sổ đăng ký của nó, bạn cần phải đặt tên cho một hình ảnh hoặc cam kết container của bạn với một hình ảnh được đặt tên như chúng ta đã thấy ở đây.

Bây giờ bạn có thể đẩy kho lưu trữ này đến sổ đăng ký được chỉ định bởi tên hoặc thẻ của nó.

Làm thế nào bạn có thể đẩy một kho lưu trữ đến một sổ đăng ký? Không phải bạn đang đẩy hình ảnh vào kho lưu trữ sao?


4
những gì về hình ảnh docker so với kho docker?
Charlie Parker

cho hình ảnh so với kho lưu trữ: stackoverflow.com/questions/31115098/ từ
wvducky

1
nếu bạn biết git, thì - Docker Registry (mặc định là hub.docker.com) => GitHub ( github.com); - Kho lưu trữ Docker => Kho lưu trữ Git; - Thẻ Docker => Git Ref (Chi nhánh / Thẻ)
go2null

Để ánh xạ tốt hơn Docker sang Git: • Docker Registry = Git Server • Docker Rep Storage = Git Rep Kho • Docker Tag = Git Tag (nhiều hơn hoặc ít hơn)
Simon Woodside

Câu trả lời:


170

Docker registry là một dịch vụ lưu trữ hình ảnh docker của bạn.

Đăng ký Docker có thể được lưu trữ bởi một bên thứ ba, như đăng ký công khai hoặc riêng tư, như một trong những đăng ký sau:

hoặc bạn có thể tự lưu trữ sổ đăng ký docker
(xem https://docs.docker.com/ee/dtr/ để biết thêm chi tiết).

Kho chứa Docker là một tập hợp các hình ảnh docker khác nhau có cùng tên, có các thẻ khác nhau. Thẻ là định danh chữ và số của hình ảnh trong kho lưu trữ.

Ví dụ: xem https://hub.docker.com/r/l Library / python / tags / . Có nhiều thẻ khác nhau cho hình ảnh python chính thức, những thẻ này đều là thành viên của kho lưu trữ python chính thức trên Docker Hub. Docker Hub là một Docker Registry được lưu trữ bởi Docker.

Để tìm hiểu thêm đọc:


11
Artifactory là một để thêm vào danh sách;) Chúng tôi sử dụng điều đó
buildmaestro

2
Và đó là liên kết cho Artifactory - jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
sự khác biệt giữa kho lưu trữ và hình ảnh trong docker là gì?
Charlie Parker

1
Kho lưu trữ có thể lưu trữ nhiều hình ảnh khác nhau được đánh dấu bằng thẻ.
Nemanja Trifunovic

2
Tại sao nó có ý nghĩa để có một hình ảnh duy nhất có nhiều thẻ?
Charlie Parker

64

Từ cuốn sách Sử dụng Docker, Phát triển và triển khai Phần mềm với Container

Cơ quan đăng ký, kho lưu trữ, hình ảnh và thẻ

Có một hệ thống phân cấp để lưu trữ hình ảnh. Thuật ngữ sau đây được sử dụng:

Đăng ký

Một dịch vụ chịu trách nhiệm lưu trữ và phân phối hình ảnh. Sổ đăng ký mặc định là Docker Hub.

Kho

Một bộ sưu tập các hình ảnh liên quan (thường cung cấp các phiên bản khác nhau của cùng một ứng dụng hoặc dịch vụ).

Nhãn

Một định danh chữ và số được gắn vào hình ảnh trong kho lưu trữ (ví dụ: 14.04 hoặc ổn định).

Vì vậy, lệnh docker pull amouat/revealjs:latestsẽ tải xuống hình ảnh được gắn thẻ mới nhất trong amouat/revealjskho lưu trữ từ sổ đăng ký Docker Hub.


1
Vì vậy, một người có thể có nhiều thẻ cho một hình ảnh?
Charlie Parker

1
@charlie Vâng. Ví dụ, ngay bây giờ ubuntu:latestubuntu:16.04có cùng Image ID, có nghĩa là chúng chỉ là nhiều thẻ cho cùng một hình ảnh.
wvducky

Trường hợp tài liệu này bị hỏng trong tài liệu dành cho docker pullphần này: "Để tải xuống một hình ảnh cụ thể hoặc bộ hình ảnh (nghĩa là kho lưu trữ), hãy sử dụng docker pull. Nếu không có thẻ nào được cung cấp, Docker Engine sử dụng :latestthẻ làm mặc định. " Vậy thì, làm thế nào để một người "tải xuống một tập hợp hình ảnh (tức là một kho lưu trữ)"? 🤔
Laird Nelson

1
thông tin ngẫu nhiên: url đăng ký mặc định là docker.io
yosefrow

1
Tôi hình dung nó giống như một cái cây với registry là gốc có nhiều kho con và mỗi kho này có hình ảnh: tag là con của nó. Mỗi cấp độ này có một vai trò cụ thể - sổ đăng ký giống như một vị trí lưu trữ và kho lưu trữ là một thư mục hình ảnh. Tôi hiểu có đúng không?
Ultrablendz

12

Bổ sung thông tin:

  • Bạn thường đẩy một kho lưu trữ đến một sổ đăng ký (và tất cả các hình ảnh là một phần của nó). Nhưng bạn có thể đẩy một hình ảnh duy nhất vào một sổ đăng ký. Trong mọi trường hợp, bạn sử dụng docker push.
  • Một hình ảnh có ID hình ảnh 12 chữ số, nhưng cũng được xác định bởi: namespace/repo-name:tag
  • Tên đầy đủ của hình ảnh có thể được tiền tố tùy chọn bởi tên và cổng máy chủ đăng ký: myregistryhost:5000/namespace/repo-name:tag
  • Một quy ước đặt tên phổ biến là sử dụng tên người dùng đăng ký của bạn như tên tôi gọi là "không gian tên".

3
Tôi hiểu những gì bạn đang nói, nhưng về mặt kỹ thuật thì không có gì như vậy image-name. Các định dạng nên user-name/repo-name:tag, theo tài liệu Docker . (Tôi ước Docker đã sử dụng thuật ngữ tốt hơn, nó khá khó hiểu và chúng thậm chí không nhất quán mọi lúc).
wvducky

@wvducky Cảm ơn! Tôi cập nhật câu trả lời của tôi. Quả thực tài liệu không tốt khi tôi trả lời câu hỏi này một năm trước. Ví dụ: hồi đó tôi đã tạo ra một vấn đề trên docker github repo vì bảng chú giải của docker không chứa "layer" và "không gian tên" (!)
Paulo Merson

1
Và làm thế nào để docker tìm ra địa chỉ IP của một sổ đăng ký công khai khi bạn chỉ cần đặt một cái gì đó như nimmis / docker-alpine-java: mới nhất
Adam

1
Ôi -docker info |grep Registry
Adam

2

Một kho lưu trữ docker là một sự kết hợp dễ thương của registryimage.

docker tag foo <registry>/<image>:<tag>

giống như

docker tag foo <repository>:<tag>

0

Docker Registry là một dịch vụ mà bạn có thể tự lưu trữ (Trusted và Private) hoặc bạn có thể để docker hub là máy chủ cho dịch vụ này. Thông thường, nếu phần mềm của bạn là thương mại, bạn sẽ lưu trữ phần mềm này dưới dạng sổ đăng ký "Riêng tư và đáng tin cậy". Đối với các nhà phát triển Java, điều này hơi giống với thiết lập Maven Artifactory.

Docker Rep Kho là một tập hợp các hình ảnh "Được gắn thẻ". Một ví dụ là bạn có thể đã gắn thẻ 5 ubuntu:latesthình ảnh:

a) Trình chỉnh sửa Nano (image1_tag: v1)

b) Một phần mềm cụ thể 1 (image1_tag: v2)

c) Sudo (hình ảnh1_tag: v3)

d) apache http daemon (image1_tag: v4)

e) tomcat (image1_tag: v5)

Bạn có thể sử dụng docker pushlệnh để đẩy từng hình ảnh trên vào kho lưu trữ của mình. Miễn là tên kho lưu trữ trùng khớp, chúng sẽ được đẩy thành công và xuất hiện dưới kho lưu trữ đã chọn của bạn và được gắn thẻ chính xác.

Bây giờ, câu hỏi của bạn là, "Vậy kho lưu trữ này được lưu trữ ở đâu / ai đang quản lý dịch vụ"? Đó là nơi Docker Registry xuất hiện. Theo mặc định, bạn sẽ nhận được một sổ đăng ký trung tâm docker (Nguồn mở) mà bạn có thể sử dụng để giữ kho lưu trữ riêng tư / công cộng của mình. Vì vậy, không có bất kỳ sửa đổi, hình ảnh của bạn sẽ được đẩy đến kho lưu trữ riêng tư của bạn trong docker hub. Một ví dụ đầu ra khi bạn đẩy các thẻ hình ảnh của bạn như sau:

docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
bf41e934d39d: Pushed
70d93396f87f: Pushed
6ec525dfd060: Pushed
705419d10b13: Pushed
a4aaef726d02: Pushed
04964fddc946: Pushed
latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
docker@my-docker-vm:/$

Và nếu bạn nhập ngay lập tức, docker images --digests -abạn có thể xác nhận rằng các thẻ hình ảnh được đẩy của bạn hiện đang hiển thị chữ ký mới đối với kho lưu trữ riêng được quản lý bởi đăng ký trung tâm docker.


"Lệnh đẩy docker để đẩy từng hình ảnh trên vào kho lưu trữ của bạn" - bạn không đẩy hình ảnh vào kho lưu trữ, mà là kho lưu trữ để đăng ký. Hoặc là tôi sai?
Impaler

0

Docker Hub và các dịch vụ lưu trữ kho lưu trữ của bên thứ ba khác được gọi là Sổ đăng ký trực tuyến. Một sổ đăng ký lưu trữ một bộ sưu tập các kho lưu trữ.

Vì một sổ đăng ký có thể có nhiều kho lưu trữ và một kho lưu trữ có thể có nhiều phiên bản khác nhau của cùng một hình ảnh được phiên bản riêng với các thẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.