Czym jest docker.io w odniesieniu do docker-ce i docker-ee?


119

Wcześniej do instalacji dockera użyłbym

apt-get install docker.io

Jednak niedawno zauważyłem dokumentację dotyczącą instalacji dockera i używa ona docker-ce. Próbowałem znaleźć różnicę między nimi, ale wyszedłem pusty. Czym jest docker.io w stosunku do docker-ce?


1
@zerkms Byłem zdezorientowany, ponieważ oficjalna witryna dockerowa nie ma wzmianki o docker.io. Czy to jest amortyzowane?
Will Parzybok,

1
docker.iopakiet jest obsługiwany przez programistów Ubuntu. Programiści Ubuntu nie są powiązani z „oficjalną witryną dokera”. Fakt, że strona dockera nie odnosi się do niego, w zasadzie nic nie znaczy.
zerkms,

1
Czy @zerkms jest aktualny?
Will Parzybok,

1
Sprawdź i zobacz? packages.ubuntu.com/…
zerkms

To teraz znów działa całkowicie!
thoni56

Odpowiedzi:


73

Starsze wersje pliku binarnego platformy Docker nazywały się docker lub docker-engine lub docker-io

Pakiet docker-io jest nadal nazwą używaną przez Debiana / Ubuntu dla wydania dockera dostarczanego w ich oficjalnych repozytoriach .

docker-ce jest certyfikowaną wersją dostarczaną bezpośrednio przez docker.com i można ją również zbudować ze źródeł .

Głównym powodem używania nazwy docker-io na platformie Debian / Ubuntu było uniknięcie konfliktu nazwy z plikiem binarnym docker w zasobniku systemowym.

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

Docker ma wersję dla przedsiębiorstw (EE) i bezpłatną wersję Community Edition (CE)

Przed zainstalowaniem Docker Community Edition (docker-ce z witryny docker.com) może być konieczne usunięcie starszych plików binarnych.

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

Porównanie pracy na sucho na 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])

Te pliki binarne doker-ce będzie miała tendencję do najnowszych wersji i obejmują Döcker-CE-CLI.


1
@Ivolmar Dziękuję bardzo, więc byłoby głupio używać docker.io zamiast jednego z nowszych?
Will Parzybok,

3
@WillParzybok Correct. W zależności od wersji Debiana lub Ubuntu powinieneś być w stanie zainstalować nową wersję CE i usunąć starsze wersje binarne
lvolmar

2
W Ubuntu 19.04 wersja docker.io nieznacznie wyprzedza docker-ce (18.09.5 v. 18.06.3). Wersje dostawców i ppas zwykle wyprzedzają wydania Ubuntu. Docenione komentarze na temat tego, czy rada dotycząca używania ce over w dalszym ciągu ma zastosowanie.
Reece

7
21 maja 2019 zdezorientowany ... czego używać na Ubuntu 18.04? apt-get install docker.iowygląda o wiele wygodniej niż zrobienie 10 lub więcej kroków, aby zainstalować docker-ce :(
Wlad

1
Właśnie to zrobiłem apt install docker.ioi dostałem Docker version 18.09.2, build 6247962... więc o co chodzi z docker-ce? Biorę to, co daje mi Ubuntu.
Wład

120

Uważaj na docker-ce

Przyjęta odpowiedź jest zbyt złożona.

docker-cejest dostarczany przez docker.com, docker.iojest dostarczany przez Debiana.

docker.ioPozornie oznacza to, że możesz zainstalować od razu, podczas gdy docker-cemusisz dołączyć zewnętrzne repozytorium z witryny docker.com beforehands.

Co jednak ważniejsze, chociaż oba pakiety zapewniają odpowiednio wydane wersje Dockera, mają bardzo różną strukturę wewnętrzną :

  • docker.iorobi to w sposób Debiana (lub Ubuntu): każda zależność zewnętrzna jest oddzielnym pakietem, który może i będzie aktualizowany niezależnie.
  • docker-cerobi to na sposób Golanga: wszystkie zależności są pobierane do drzewa źródłowego przed budowaniem, a całość tworzy następnie jeden pakiet. Dlatego zawsze aktualizujesz docker ze wszystkimi jego zależnościami naraz.

Problem z tym drugim podejściem polega na tym, że jest on sprzeczny z większością tego, co próbuje zrobić Debian / Ubuntu.

Gdyby wszyscy robili to w taki docker-cesposób ...

... miałbyś 174 wersje wielu bibliotek w swoim systemie, które nie tylko zajmują dużo pamięci, ale także zasadniczo uniemożliwiają podjęcie decyzji, czy masz tę wersję 7.6.5 biblioteki XYZ z tą straszną luką w zabezpieczeniach gdzieś pośród im.
Nie mówiąc już o zamknięciu tej luki (lub wszystkich 109 jej instancji).

Co gorsza, jedną z 174 wersji prawdopodobnie będzie wersja 5.4.3 XYZ sprzed trzech lat, która miała inną, bardzo różną, ale równie otwartą lukę w zabezpieczeniach, o której świat dawno zapomniał, ale która nadal będzie istnieć szczęśliwie. w systemie.

Kilka uwag:

  • Wiele stron internetowych nazywa się docker.io„nieaktualnymi”. To dlatego, że nie był konserwowany przez około rok. Od sierpnia 2019 r. Tak już nie jest.
  • Nauczyłem się tego wszystkiego dzisiaj tutaj i teraz przestawię się z używania docker-cena używanie docker.io- i prawdopodobnie nigdy więcej nie wrócę.
  • Jest powód, dla którego system pakowania Debian / Ubuntu jest tak skomplikowany. Dobry powód.

4
znalazłem tę odpowiedź po docker-ce w 2 moich węzłach, podczas gdy inny węzeł z docker.io przetrwał podczas aktualizacji apt.
Jingshao Chen

3
To sprawia, że ​​myślę o ulubionym pakiecie docker.io Debiana / Ubuntu. Co więcej, jest to tylko jedno apt install, podczas gdy w przypadku docker-ce zawsze muszę przejść do dokumentów Docker, aby sprawdzić kroki instalacji.
Wład

2
Możesz zechcieć wspomnieć o konsekwencjach bezpieczeństwa wynikających z używania docker.io - nie będziesz otrzymywać łat bezpieczeństwa, gdy tylko przestanie być konserwowany, a nawet jeśli nie będziesz polegać na opiekunach poprawnie przenoszących wszystkie poprawki bezpieczeństwa.
Benni

2
Jedną z zalet docker-ce jest to, że otrzymujesz certyfikowaną wersję, otrzymujesz obietnicę zespołu docker, że pakiet będzie działał z dołączonymi zależnościami. Przypuszczalnie mniej jest wskazywania palcem, jeśli masz problem. Czy opiekunowie Debiana z docker.io potwierdzają, że docker działa na najbardziej aktualnej wersji wszystkich zależnych pakietów? Czy zespół dockera wykonał wystarczająco dobrą robotę, pakując swoje testy, aby każdy inny zespół mógł poświadczyć wydanie? Nie ma tutaj „najlepszego” rozwiązania, jest tylko równowaga ryzyk i musisz wybrać, które z nich ma dla Ciebie większe znaczenie.
BobHy

@BobHy Zgadzam się, to kompromis. Po prostu nie zapomnij przełączyć się docker.iona systemy produkcyjne, które nie mają działalności deweloperskiej, jeśli i kiedy Docker Inc. przestanie działać lub przestanie regularnie (!) Aktualizować z docker-ceinnego powodu. Pod tym względem Debian cieszy się solidną reputacją: nawet jeśli docker.iopowinien przestać otrzymywać aktualizacje, wiele bibliotek nadal to zrobi.
Lutz Prechelt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.