Cos'è docker.io in relazione a docker-ce e docker-ee?


119

In precedenza, per installare la finestra mobile userei

apt-get install docker.io

Tuttavia, ho recentemente notato la documentazione per l'installazione di docker e utilizza docker-ce. Ho provato a trovare la differenza tra i due, ma sono risultato vuoto. Cos'è docker.io in relazione a docker-ce?


1
@zerkms Ero confuso perché il sito Web Docker ufficiale non menziona docker.io. È ammortizzato?
Will Parzybok

1
docker.ioil pacchetto è mantenuto dagli sviluppatori Ubuntu. Gli sviluppatori di Ubuntu non sono affiliati al "sito Web Docker ufficiale". Quindi il fatto che il sito Web Docker non si riferisca ad esso non significa praticamente nulla.
zerkms

1
@zerkms Docker.io è aggiornato però?
Will Parzybok

1
Controllare e vedere? packages.ubuntu.com/…
zerkms

Ora funziona di nuovo completamente!
thoni56

Risposte:


73

Le versioni precedenti del binario Docker erano chiamate docker o docker-engine o docker-io

Il pacchetto docker-io è ancora il nome usato da Debian / Ubuntu per il rilascio docker fornito nei loro repository ufficiali .

docker-ce è una versione certificata fornita direttamente da docker.com e può anche essere compilata dal sorgente .

Il motivo principale per utilizzare il nome docker-io sulla piattaforma Debian / Ubuntu era evitare un conflitto di nomi con il binario del vassoio di sistema docker.

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

Docker ha una versione Enterprise (EE) e una versione Community Edition (CE) gratuita

Prima di installare Docker Community Edition (docker-ce da docker.com) potrebbe essere necessario rimuovere i file binari meno recenti.

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

Confronto a secco su 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])

I binari docker-ce tenderanno ad essere le versioni più recenti e includeranno docker-ce-cli.


1
@Ivolmar Grazie mille, quindi sarebbe sciocco usare docker.io su uno di quelli più recenti?
Will Parzybok

3
@ WillParzybok Correct. A seconda della versione di Debian o Ubuntu, dovresti essere in grado di installare la nuova versione CE e rimuovere i binari della versione precedente
lvolmar

2
In Ubuntu 19.04, la versione docker.io è leggermente superiore a docker-ce (18.09.5 v. 18.06.3). Le versioni dei fornitori e i ppas sono in genere in anticipo rispetto alle versioni di Ubuntu. Commenti apprezzati sul fatto che il consiglio di usare ce su io sia ancora valido.
Reece

7
2019-May-21 confuso ... cosa usare su Ubuntu 18.04? apt-get install docker.iosembra molto più comodo che eseguire i 10 o più passaggi per installare docker-ce :(
Wlad

1
Appena fatto apt install docker.ioe ottenuto Docker version 18.09.2, build 6247962... quindi qual è il problema con Docker-Ce? Prendo quello che mi dà Ubuntu.
Wlad

120

Diffidare di docker-ce

La risposta accettata è poco complessa.

docker-ceè fornito da docker.com, docker.ioè fornito da Debian.

In superficie, questo significa che puoi installare docker.iosubito, mentre per docker-cedevi collegare un repository esterno da docker.com in anticipo.

Ancora più importante, tuttavia, sebbene entrambi i pacchetti forniscano versioni rilasciate correttamente di Docker, hanno una struttura interna molto diversa :

  • docker.iolo fa nel modo Debian (o Ubuntu): ogni dipendenza esterna è un pacchetto separato che può essere aggiornato indipendentemente.
  • docker-celo fa il modo in cui Golang: Tutte le dipendenze sono tirati nella sorgente albero prima che la costruzione e l'intero forme cosa che un unico pacchetto dopo. Quindi aggiorni sempre la finestra mobile con tutte le sue dipendenze contemporaneamente.

Il problema con quest'ultimo approccio è che va contro gran parte di ciò che Debian / Ubuntu stanno cercando di fare.

Se tutti lo facessero come docker-cefa ...

... avresti 174 versioni di molte librerie sul tuo sistema, che non solo consumano molta memoria, ma rendono anche essenzialmente impossibile decidere se hai quella versione 7.6.5 della libreria XYZ con quell'orribile vulnerabilità di sicurezza da qualche parte tra loro.
Per non parlare di chiudere quella vulnerabilità (o tutte le 109 istanze di essa che hai).

Peggio ancora, è probabile che una delle 174 versioni sia la versione 5.4.3 di XYZ di tre anni fa, che aveva un'altra vulnerabilità di sicurezza molto diversa, ma altrettanto aperta che il mondo ha da tempo dimenticato ma che esisterà ancora felicemente sul tuo sistema.

Alcune osservazioni:

  • Molte pagine web chiamano docker.io"obsolete". Questo perché non è stato mantenuto per circa un anno. A partire da agosto 2019, non è più così.
  • Ho imparato tutto questo oggi qui e ora passerò dall'uso docker-ceall'utilizzo docker.io- e presumibilmente non tornerò mai più indietro.
  • C'è una ragione per cui il sistema di pacchettizzazione Debian / Ubuntu è così complicato. Una buona ragione.

4
ho trovato questa risposta dopo che docker-ce in 2 dei miei nodi si è bloccato mentre un altro nodo con docker.io è sopravvissuto durante l'aggiornamento di apt.
Jingshao Chen

3
Questo mi fa pensare al pacchetto docker.io di Debian / Ubuntu preferito. Inoltre, è solo una apt installdistanza mentre per docker-ce devo sempre andare alla documentazione di Docker per cercare i passaggi di installazione.
Wlad

2
Potresti voler menzionare le implicazioni sulla sicurezza dell'utilizzo di docker.io: non riceverai le patch di sicurezza non appena cesserà di nuovo la manutenzione, e anche se non ti affidi ai manutentori che eseguono correttamente il backport di ogni patch di sicurezza.
Benni

2
Un vantaggio di docker-ce è che ottieni una versione certificata, ottieni la promessa del team docker che il pacchetto funzionerà con le dipendenze in bundle. Presumibilmente, c'è meno dito puntato se hai un problema. I manutentori debian di docker.io certificano che docker gira sulla versione più recente di tutti i pacchetti dipendenti? Il team di docker ha svolto un lavoro sufficientemente buono nel confezionare i propri test in modo che qualsiasi altro team possa certificare un rilascio? Non esiste una soluzione "migliore" qui, solo un equilibrio di rischi, e devi scegliere quali rischi contano di più per te.
BobHy,

@ BobHy sono d'accordo, è un compromesso. Basta non dimenticare di passare ai docker.iosistemi di produzione che non hanno attività di sviluppo se e quando Docker Inc. va in malora o smette di fare aggiornamenti regolari (!) docker-cePer qualche altro motivo. Debian ha una solida reputazione sotto questo aspetto: anche se docker.iodovesse smettere di ricevere di nuovo gli aggiornamenti, le molte librerie lo faranno comunque.
Lutz Prechelt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.