Docker.io trong mối quan hệ với docker-ce và docker-ee là gì?


119

Trước đây, để cài đặt docker, tôi sẽ sử dụng

apt-get install docker.io

Tuy nhiên, gần đây tôi đã nhận thấy tài liệu để cài đặt docker và nó sử dụng docker-ce. Tôi đã cố gắng tìm ra sự khác biệt giữa hai điều này, nhưng đều không có kết quả. Docker.io trong mối quan hệ với docker-ce là gì?


1
@zerkms Tôi đã bối rối vì trang web docker chính thức không có đề cập đến docker.io. Có bị mất giá không?
Will Parzybok.

1
docker.iogói được duy trì bởi các nhà phát triển ubuntu. Các nhà phát triển Ubuntu không liên kết với "trang web docker chính thức". Vì vậy, thực tế trang web docker không đề cập đến nó có nghĩa là về cơ bản không có gì.
zerkms

1
@zerkms: Docker.io có được cập nhật không?
Will Parzybok,

1
Kiểm tra và xem? packages.ubuntu.com/...
zerkms

Điều này bây giờ hoàn toàn hoạt động trở lại!
thoni56

Câu trả lời:


73

Các phiên bản cũ hơn của hệ nhị phân Docker được gọi là docker hoặc docker-engine hoặc docker-io

gói docker-io vẫn là tên được Debian / Ubuntu sử dụng cho bản phát hành docker được cung cấp trên repo chính thức của họ .

docker-ce là một bản phát hành được chứng nhận do docker.com cung cấp trực tiếp và cũng có thể được xây dựng từ nguồn .

Lý do chính cho việc sử dụng tên docker-io trên nền tảng Debian / Ubuntu là để tránh xung đột tên với mã nhị phân khay hệ thống của docker.

http://manpages.ubuntu.com/manpages/precise/man1/docker.1.html

Docker có phiên bản doanh nghiệp (EE) và phiên bản Phiên bản cộng đồng miễn phí (CE)

Trước khi cài đặt Docker Community Edition (docker-ce từ docker.com), bạn có thể cần phải xóa các tệp nhị phân cũ hơn.

Centos / RHL:

https://docs.docker.com/engine/installation/linux/docker-ce/centos/

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Ubuntu / Debian:

https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

$ sudo apt-get remove docker docker-engine docker.io containerd runc

So sánh chạy khô trên ubuntu:

$ sudo apt-get install docker.io --dry-run
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  bridge-utils cgroupfs-mount containerd pigz runc ubuntu-fan
Suggested packages:
  ifupdown aufs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils
The following NEW packages will be installed:
  bridge-utils cgroupfs-mount containerd docker.io pigz runc ubuntu-fan
0 upgraded, 7 newly installed, 0 to remove and 70 not upgraded.
Inst pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Inst bridge-utils (1.5-15ubuntu1 Ubuntu:18.04/bionic [amd64])
Inst cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Inst runc (1.0.0~rc7+git20190403.029124da-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst containerd (1.2.6-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst docker.io (18.09.7-0ubuntu1~18.04.4 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst ubuntu-fan (0.12.10 Ubuntu:18.04/bionic [all])
Conf pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Conf bridge-utils (1.5-15ubuntu1 Ubuntu:18.04/bionic [amd64])
Conf cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Conf runc (1.0.0~rc7+git20190403.029124da-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf containerd (1.2.6-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf docker.io (18.09.7-0ubuntu1~18.04.4 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf ubuntu-fan (0.12.10 Ubuntu:18.04/bionic [all])

$ sudo apt-get install docker-ce --dry-run
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  aufs-tools cgroupfs-mount containerd.io docker-ce-cli libltdl7 pigz
The following NEW packages will be installed:
  aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli libltdl7 pigz
0 upgraded, 7 newly installed, 0 to remove and 70 not upgraded.
Inst pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Inst aufs-tools (1:4.9+20170918-1ubuntu1 Ubuntu:18.04/bionic [amd64])
Inst cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Inst containerd.io (1.2.10-3 Docker CE:bionic [amd64])
Inst docker-ce-cli (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Inst docker-ce (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Inst libltdl7 (2.4.6-2 Ubuntu:18.04/bionic [amd64])
Conf pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Conf aufs-tools (1:4.9+20170918-1ubuntu1 Ubuntu:18.04/bionic [amd64])
Conf cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Conf containerd.io (1.2.10-3 Docker CE:bionic [amd64])
Conf docker-ce-cli (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Conf docker-ce (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Conf libltdl7 (2.4.6-2 Ubuntu:18.04/bionic [amd64])

Các mã nhị phân docker-ce sẽ có xu hướng là phiên bản mới nhất và bao gồm docker-ce-cli.


1
@Ivolmar Cảm ơn bạn rất nhiều, vì vậy sẽ thật ngớ ngẩn khi sử dụng docker.io thay vì một trong những cái mới hơn?
Will Parzybok,

3
@WillParzybok Đúng. Tùy thuộc vào phiên bản của Debian hoặc Ubuntu bạn sẽ có thể cài đặt phiên bản CE mới và loại bỏ mã nhị phân phiên bản cũ
lvolmar

2
Trong Ubuntu 19.04, phiên bản docker.io đi trước docker-ce một chút (18.09.5 v. 18.06.3). Các bản phát hành của nhà cung cấp và ppas thường đi trước các bản phát hành của Ubuntu. Các ý kiến ​​đánh giá cao về việc liệu lời khuyên sử dụng ce over io vẫn áp dụng.
Reece

7
2019-Tháng Năm-21 bối rối ... những gì để sử dụng trên Ubuntu 18.04? apt-get install docker.iotrông thoải mái hơn rất nhiều so với việc thực hiện 10 bước trở lên để cài đặt
docker

1
Vừa làm apt install docker.iovừa có Docker version 18.09.2, build 6247962... vậy có chuyện gì với docker-ce? Tôi lấy những gì Ubuntu mang lại cho tôi.
Wlad

120

Hãy cảnh giác với docker-ce

Câu trả lời được chấp nhận là không phức tạp.

docker-ceđược cung cấp bởi docker.com, docker.iođược cung cấp bởi Debian.

Bề ngoài, điều này có nghĩa là bạn có thể cài đặt docker.iongay lập tức, trong khi đối với docker-cebạn, bạn phải đính kèm một kho lưu trữ bên ngoài từ docker.com trước đó.

Tuy nhiên, quan trọng hơn, mặc dù cả hai gói đều cung cấp các phiên bản Docker được phát hành đúng cách, nhưng chúng có cấu trúc bên trong rất khác nhau :

  • docker.iothực hiện theo cách Debian (hoặc Ubuntu): Mỗi phần phụ thuộc bên ngoài là một gói riêng biệt có thể và sẽ được cập nhật độc lập.
  • docker-celàm theo cách của Golang: Tất cả các phụ thuộc được kéo vào cây nguồn trước khi xây dựng và toàn bộ mọi thứ tạo thành một gói duy nhất sau đó. Vì vậy, bạn luôn cập nhật docker với tất cả các phụ thuộc của nó cùng một lúc.

Vấn đề với cách tiếp cận thứ hai là nó đi ngược lại phần lớn những gì Debian / Ubuntu đang cố gắng thực hiện.

Nếu mọi người đã làm theo cách docker-ceđó ...

... bạn sẽ có 174 phiên bản của nhiều thư viện trên hệ thống của mình, điều này không chỉ tiêu tốn rất nhiều bộ nhớ mà còn khiến bạn không thể quyết định xem liệu bạn có phiên bản 7.6.5 của thư viện XYZ đó với lỗ hổng bảo mật khủng khiếp ở đâu đó không chúng.
Hãy để một mình đóng lỗ hổng đó (hoặc tất cả 109 trường hợp của nó mà bạn có).

Tệ hơn nữa, một trong số 174 phiên bản có khả năng là phiên bản 5.4.3 của XYZ vào ba năm trước, có một lỗ hổng bảo mật khác, rất khác, nhưng cũng giống như lỗ hổng bảo mật mà thế giới đã lãng quên từ lâu nhưng điều đó vẫn sẽ tồn tại hạnh phúc trên hệ thống của bạn.

Một số nhận xét:

  • Nhiều trang web gọi là docker.io"lỗi thời". Đó là bởi vì nó đã không bị thay đổi trong khoảng một năm. Kể từ tháng 8 năm 2019, điều này không còn xảy ra nữa.
  • Tôi đã học tất cả những điều này hôm nay ở đây và bây giờ sẽ chuyển từ sử dụng docker-cesang sử dụng docker.io- và có lẽ sẽ không bao giờ quay lại nữa.
  • Có một lý do tại sao hệ thống đóng gói Debian / Ubuntu rất phức tạp. Một lý do chính đáng.

4
đã tìm thấy câu trả lời này sau khi docker-ce ở 2 trong số các nút của tôi bị kẹt trong khi một nút khác với docker.io vẫn sống sót trong khi nâng cấp apt.
Jingshao Chen

3
Điều này khiến tôi bắt đầu sử dụng gói docker.io của Debian / Ubuntu. Nhiều hơn nó chỉ là một apt installtrong khi đối với docker-ce, tôi luôn phải truy cập tài liệu Docker để tra cứu các bước cài đặt.
Wlad

2
Bạn có thể muốn đề cập đến các tác động bảo mật của việc sử dụng docker.io - bạn sẽ không nhận được các bản vá bảo mật ngay sau khi nó ngừng bảo trì một lần nữa, và thậm chí miễn là bạn không dựa vào các nhà bảo trì sao lưu chính xác mọi bản vá bảo mật.
Benni

2
Một lợi thế của docker-ce là bạn nhận được bản phát hành được chứng nhận, bạn nhận được lời hứa của nhóm docker rằng gói sẽ hoạt động với các phụ thuộc đi kèm. Có lẽ, bạn sẽ ít chỉ tay hơn nếu bạn gặp vấn đề. Những người bảo trì debian của docker.io có chứng nhận rằng docker chạy trên phiên bản mới nhất của tất cả các gói phụ thuộc không? Nhóm docker đã hoàn thành tốt công việc đóng gói các thử nghiệm của họ để bất kỳ nhóm nào khác có thể chứng nhận bản phát hành không? Không có giải pháp "tốt nhất" ở đây, chỉ là cân bằng rủi ro và bạn phải chọn rủi ro nào quan trọng hơn với bạn.
BobHy

@BobHy Tôi đồng ý, đó là một sự đánh đổi. Đừng quên chuyển sang docker.iohệ thống sản xuất không có hoạt động phát triển nếu và khi nào Docker Inc. ngừng hoạt động hoặc ngừng cập nhật thường xuyên (!) docker-ceVì một số lý do khác. Debian có một danh tiếng vững chắc về mặt này: Ngay cả khi docker.iongừng cập nhật một lần nữa, nhiều thư viện vẫn sẽ như vậy.
Lutz Prechelt
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.