Что такое docker.io по отношению к docker-ce и docker-ee?

119

Раньше для установки докера я использовал

apt-get install docker.io

Однако недавно я заметил документацию по установке docker, и она использует docker-ce. Я пытался найти разницу между ними, но ничего не вышло. Что такое docker.io по отношению к docker-ce?

Уилл Парзыбок
источник
1
@zerkms Меня смутило, потому что на официальном сайте docker нет упоминания о docker.io. Это обесценивается?
Will Parzybok
1
docker.ioпакет поддерживается разработчиками ubuntu. Разработчики Ubuntu не связаны с «официальным сайтом докеров». Таким образом, тот факт, что веб-сайт докеров не ссылается на него, в основном ничего не значит.
zerkms
1
@zerkms А docker.io актуален?
Will Parzybok
1
Проверить и посмотреть? packages.ubuntu.com/…
zerkms
Теперь это снова полностью работает!
thoni56

Ответы:

73

Старые версии двоичного файла Docker назывались docker, docker-engine или docker-io.

Пакет docker-io по-прежнему используется Debian / Ubuntu для выпуска докеров, представленного в их официальных репозиториях .

docker-ce - это сертифицированный выпуск, предоставляемый непосредственно docker.com, и его также можно собрать из исходного кода .

Основная причина использования имени docker-io на платформе Debian / Ubuntu заключалась в том, чтобы избежать конфликта имени с двоичным файлом панели задач Docker.

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

Docker имеет корпоративную версию (EE) и бесплатную версию Community Edition (CE).

Перед установкой Docker Community Edition (docker-ce с сайта docker.com) вам может потребоваться удалить старые двоичные файлы.

Centos / БРЗ:

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

Сравнение пробного запуска на 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])

В Докер-се бинарные файлы будут иметь тенденцию быть последние версии и включают в Докер-CE-консоли.

lvolmar
источник
1
@Ivolmar Большое спасибо, поэтому было бы глупо использовать docker.io вместо одного из более новых?
Will Parzybok
3
@WillParzybok Правильно. В зависимости от вашей версии Debian или Ubuntu вы сможете установить новую версию CE и удалить бинарные файлы старой версии
lvolmar
2
В Ubuntu 19.04 версия docker.io немного опережает docker-ce (18.09.5 v. 18.06.3). Релизы поставщика и ppas-файлы обычно опережают выпуски Ubuntu. Комментарии о том, действительно ли совет использовать ce вместо io все еще актуален.
Рис
7
21 мая 2019 г. запутались ... что использовать в Ubuntu 18.04? apt-get install docker.ioвыглядит намного удобнее, чем выполнение 10 или более шагов для установки docker-ce :(
Wlad
1
Только что сделал apt install docker.ioи получил Docker version 18.09.2, build 6247962... так в чем дело с docker-ce? Я беру то, что мне дает Ubuntu.
Wlad
120

Остерегайтесь docker-ce

Принятый ответ недостаточно сложен.

docker-ceпредоставляется docker.com, docker.ioпредоставляется Debian.

На docker.ioпервый взгляд, это означает, что вы можете установить его сразу же, в то время как docker-ceвам необходимо заранее подключить внешний репозиторий с docker.com.

Что еще более важно, хотя оба пакета предоставляют правильно выпущенные версии Docker, они имеют совершенно разную внутреннюю структуру :

  • docker.ioделает это способом Debian (или Ubuntu): каждая внешняя зависимость - это отдельный пакет, который может и будет обновляться независимо.
  • docker-ceделает это способом Голанга: все зависимости втягиваются в дерево исходных кодов перед сборкой, и все это впоследствии формирует единый пакет. Таким образом, вы всегда обновляете докер сразу со всеми его зависимостями.

Проблема с последним подходом заключается в том, что он идет вразрез с большинством того, что пытается сделать Debian / Ubuntu.

Если бы все так делали docker-ce...

... у вас будет 174 версии многих библиотек в вашей системе, которые не только потребляют много памяти, но и делают практически невозможным решить, есть ли у вас версия 7.6.5 библиотеки XYZ с этим ужасным уязвимостью безопасности где-то среди их.
Не говоря уже о том, чтобы закрыть эту уязвимость (или все 109 ее экземпляров, которые у вас есть).

Хуже того, одна из 174 версий, скорее всего, будет версией 5.4.3 XYZ по состоянию на три года назад, в которой была другая, совсем другая, но такая же зияющая уязвимость безопасности, о которой мир давно забыл, но которая все еще будет счастливо существовать. в вашей системе.

Некоторые замечания:

  • Многие веб-страницы вызывают docker.io «устаревшими». Это потому, что он не обслуживался около года. По состоянию на август 2019 года это уже не так.
  • Я узнал все это сегодня здесь и теперь перейду с использования docker-ceна использование docker.io- и, по-видимому, больше никогда не вернусь.
  • Есть причина, по которой система пакетов Debian / Ubuntu настолько сложна. Хорошая причина.
Лутц Прешельт
источник
4
нашел этот ответ после того, как docker-ce в двух моих узлах застрял, в то время как другой узел с docker.io выжил при обновлении apt.
Jingshao Chen
3
Это заставляет меня остановиться на любимом пакете docker.io Debian / Ubuntu. Более того, он находится всего в одном apt installместе, в то время как для docker-ce мне всегда нужно заходить в документацию Docker, чтобы найти шаги по установке.
Wlad
2
Возможно, вы захотите упомянуть о последствиях использования docker.io для безопасности - вы не получите исправлений безопасности, как только он снова выйдет из эксплуатации, и даже до тех пор, пока это не произойдет, вы полагаетесь на то, что сопровождающие правильно переносят каждое исправление безопасности.
Бенни
2
Одним из преимуществ docker-ce является то, что вы получаете сертифицированный выпуск, вы получаете обещание команды докеров, что пакет будет работать со связанными зависимостями. По-видимому, если у вас есть проблема, вам будет меньше указывать пальцем. Выполните DEBiAN сопровождающий docker.io УДОСТОВЕРЯЕТСЯ что докеры работают на самом последнюю версию всех зависимых пакетов? Команда докеров провела достаточно хорошую работу по упаковке своих тестов, чтобы любая другая команда могла сертифицировать выпуск? Здесь нет «лучшего» решения, просто баланс рисков, и вам нужно выбрать, какие риски для вас важнее.
BobHy
@BobHy Я согласен, это компромисс. Только не забудьте переключиться на docker.ioпроизводственные системы, которые не занимаются разработкой, если и когда Docker Inc. перестанет делать регулярные (!) Обновления по docker-ceкакой-либо другой причине. В этом отношении Debian имеет прочную репутацию: даже если он docker.ioснова перестанет получать обновления, многие библиотеки все равно будут.
Лутц Прешельт,