Qu'est-ce que docker.io par rapport à docker-ce et docker-ee?

119

Auparavant, pour installer docker, j'utiliserais

apt-get install docker.io

Cependant, j'ai récemment remarqué la documentation pour l'installation de docker, et il utilise docker-ce. J'ai essayé de trouver la différence entre les deux, mais je suis resté vide. Qu'est-ce que docker.io par rapport à docker-ce?

Will Parzybok
la source
1
@zerkms J'étais confus car le site officiel de docker ne fait aucune mention de docker.io. Est-il amorti?
Will Parzybok du
1
docker.ioLe package est maintenu par les développeurs ubuntu. Les développeurs Ubuntu ne sont pas affiliés au "site Web officiel du docker". Donc, le fait que le site Web de docker n'y fasse pas référence ne signifie fondamentalement rien.
zerkms
1
@zerkms Est-ce que docker.io est à jour?
Will Parzybok le
1
Vérifier et voir? packages.ubuntu.com
...
Cela fonctionne à nouveau totalement!
thoni56

Réponses:

73

Les anciennes versions du binaire Docker étaient appelées docker ou docker-engine ou docker-io

Le paquet docker-io est toujours le nom utilisé par Debian / Ubuntu pour la version docker fournie sur leurs dépôts officiels .

docker-ce est une version certifiée fournie directement par docker.com et peut également être créée à partir des sources .

La principale raison d'utiliser le nom docker-io sur la plate-forme Debian / Ubuntu était d'éviter un conflit de nom avec le binaire de la barre d'état système de docker.

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

Docker a une version entreprise (EE) et une version gratuite Community Edition (CE)

Avant d'installer Docker Community Edition (docker-ce de docker.com), vous devrez peut-être supprimer les anciens binaires.

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

Comparaison à sec sur 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])

Les binaires docker-ce auront tendance à être les dernières versions et incluront docker-ce-cli.

lvolmar
la source
1
@Ivolmar Merci beaucoup, alors ce serait idiot d'utiliser docker.io sur l'un des plus récents alors?
Will Parzybok
3
@WillParzybok Correct. En fonction de votre version de Debian ou d'Ubuntu, vous devriez être en mesure d'installer une nouvelle version CE et de supprimer les binaires des anciennes versions
lvolmar
2
Dans Ubuntu 19.04, la version docker.io est légèrement en avance sur docker-ce (18.09.5 v. 18.06.3). Les versions des fournisseurs et les ppas sont généralement en avance sur les versions d'Ubuntu. Commentaires appréciés sur la question de savoir si le conseil d'utiliser ce sur io s'applique toujours.
Reece
7
2019-mai-21 confus ... que utiliser sur Ubuntu 18.04? apt-get install docker.iosemble tellement plus confortable que de faire les 10 étapes ou plus pour installer docker-ce :(
Wlad
1
Je viens de le faire apt install docker.ioet j'ai Docker version 18.09.2, build 6247962... alors quel est le problème avec docker-ce? Je prends ce que me donne Ubuntu.
Wlad
120

Méfiez-vous de docker-ce

La réponse acceptée est sous-complexe.

docker-ceest fourni par docker.com, docker.ioest fourni par Debian.

En surface, cela signifie que vous pouvez installer tout de docker.iosuite, alors que docker-cevous devez attacher un référentiel externe à partir de docker.com avant les mains.

Plus important encore, bien que les deux packages fournissent des versions correctement publiées de Docker, ils ont une structure interne très différente :

  • docker.iole fait à la manière Debian (ou Ubuntu): Chaque dépendance externe est un paquet séparé qui peut et sera mis à jour indépendamment.
  • docker-cele fait à la manière de Golang: toutes les dépendances sont tirées dans l' arborescence des sources avant la construction et le tout forme un seul paquet après. Ainsi, vous mettez toujours à jour le docker avec toutes ses dépendances à la fois.

Le problème avec cette dernière approche est qu'elle va à l'encontre d'une grande partie de ce que Debian / Ubuntu essaie de faire.

Si tout le monde le faisait comme le docker-cefait ...

... vous auriez 174 versions de nombreuses bibliothèques sur votre système, qui non seulement consomment beaucoup de mémoire, mais rendent également impossible de décider si vous avez cette version 7.6.5 de la bibliothèque XYZ avec cette horrible vulnérabilité de sécurité quelque part parmi leur.
Sans parler de fermer cette vulnérabilité (ou les 109 instances de celle-ci que vous avez).

Pire encore, l'une des 174 versions est probablement la version 5.4.3 de XYZ d'il y a trois ans, qui présentait une autre vulnérabilité de sécurité, très différente, mais tout aussi béante que le monde a depuis longtemps oubliée mais qui existera toujours heureusement. sur votre système.

Quelques remarques:

  • De nombreuses pages Web appellent docker.io«obsolète». C'est parce qu'il n'a pas été entretenu pendant environ un an. Depuis août 2019, ce n'est plus le cas.
  • J'ai appris tout cela aujourd'hui ici et je vais maintenant passer de l'utilisation docker-ceà l'utilisation docker.io- et je ne reviendrai probablement plus jamais en arrière.
  • Il y a une raison pour laquelle le système d'empaquetage Debian / Ubuntu est si compliqué. Une bonne raison.
Lutz Prechelt
la source
4
a trouvé cette réponse après que docker-ce dans 2 de mes nœuds soit bloqué alors qu'un autre nœud avec docker.io a survécu pendant la mise à niveau d'apt.
Jingshao Chen
3
Cela me fait penser au paquet docker.io préféré de Debian / Ubuntu. De plus, il n'y en a qu'un apt install, tandis que pour docker-ce, je dois toujours consulter la documentation Docker pour consulter les étapes d'installation.
Wlad
2
Vous voudrez peut-être mentionner les implications de sécurité de l'utilisation de docker.io - vous ne recevrez pas de correctifs de sécurité dès qu'il sera à nouveau mis hors maintenance, et même tant que ce n'est pas le cas, vous comptez sur les mainteneurs pour rétroporter correctement chaque correctif de sécurité.
Benni le
2
L'un des avantages de docker-ce est que vous obtenez une version certifiée, vous obtenez la promesse de l'équipe docker que le package fonctionnera avec les dépendances groupées. Vraisemblablement, il y a moins de pointage du doigt si vous avez un problème. Les responsables Debian de docker.io certifient-ils que docker fonctionne sur la version la plus récente de tous les packages dépendants? L'équipe docker a-t-elle suffisamment bien réussi à emballer ses tests pour qu'une autre équipe puisse certifier une version? Il n'y a pas de «meilleure» solution ici, juste un équilibre des risques, et vous devez choisir les risques qui comptent le plus pour vous.
BobHy
@BobHy Je suis d'accord, c'est un compromis. N'oubliez pas de passer à docker.iovos systèmes de production qui n'ont aucune activité de développement si et quand Docker Inc. tombe à l'eau ou arrête de faire des mises à jour régulières (!) docker-cePour une autre raison. Debian a une solide réputation à cet égard: même si elle docker.iodevrait à nouveau cesser de recevoir des mises à jour, les nombreuses bibliothèques le seront toujours.
Lutz Prechelt le