O que é docker.io em relação a docker-ce e docker-ee?

119

Anteriormente, para instalar o docker, eu usaria

apt-get install docker.io

No entanto, notei recentemente a documentação para instalar o docker e ele usa docker-ce. Tentei encontrar a diferença entre os dois, mas não consegui. O que é docker.io em relação ao docker-ce?

Will Parzybok
fonte
1
@zerkms Fiquei confuso porque o site oficial do docker não menciona docker.io. Está depreciado?
Will Parzybok
1
docker.iopacote é mantido por desenvolvedores do Ubuntu. Os desenvolvedores do Ubuntu não são afiliados ao "site oficial do docker". Portanto, o fato de o site do docker não se referir a ele significa basicamente nada.
zerkms
1
@zerkmsO docker.io está atualizado?
Will Parzybok
1
Verifique e veja? packages.ubuntu.com/…
zerkms
Isso agora funciona totalmente de novo!
thoni56

Respostas:

73

Versões mais antigas do binário do Docker eram chamadas de docker ou docker-engine ou docker-io

pacote docker-io ainda é o nome usado pelo Debian / Ubuntu para o lançamento do docker fornecido em seus repositórios oficiais .

docker-ce é uma versão certificada fornecida diretamente por docker.com e também pode ser criada a partir da fonte .

O principal motivo para usar o nome docker-io na plataforma Debian / Ubuntu foi para evitar um conflito de nomes com o binário docker da bandeja do sistema.

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

O Docker tem uma versão corporativa (EE) e uma versão gratuita Community Edition (CE)

Antes de instalar o Docker Community Edition (docker-ce de docker.com), pode ser necessário remover binários mais antigos.

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

Comparação dry-run no 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])

Os binários docker-ce tenderão a ser as versões mais recentes e incluir docker-ce-cli.

lvolmar
fonte
1
@Ivolmar Muito obrigado, então seria bobagem usar docker.io em vez de um dos mais novos?
Will Parzybok
3
@WillParzybok Correct. Dependendo da sua versão do Debian ou Ubuntu, você deve ser capaz de instalar a nova versão CE e remover binários de versões anteriores
lvolmar
2
No Ubuntu 19.04, a versão docker.io está um pouco à frente do docker-ce (18.09.5 v. 18.06.3). Versões de fornecedores e ppas estão normalmente à frente dos lançamentos do Ubuntu. Comentários apreciados sobre se o conselho para usar ce over io ainda se aplica.
Reece
7
21 de maio de 2019 confuso ... o que usar no Ubuntu 18.04? apt-get install docker.ioparece muito mais confortável do que executar as 10 etapas ou mais para instalar o docker-ce :(
Wlad
1
Apenas fiz apt install docker.ioe peguei Docker version 18.09.2, build 6247962... então qual é o problema com docker-ce? Eu pego o que o Ubuntu me dá.
Wlad
120

Desconfie do docker-ce

A resposta aceita é subcomplexa.

docker-ceé fornecido por docker.com, docker.ioé fornecido pelo Debian.

Superficialmente, isso significa que você pode instalar docker.ioimediatamente, enquanto para docker-cevocê deve anexar um repositório externo de docker.com de antemão.

Mais importante, no entanto, embora ambos os pacotes forneçam versões devidamente lançadas do Docker, eles têm uma estrutura interna muito diferente :

  • docker.iofaz isso da maneira Debian (ou Ubuntu): Cada dependência externa é um pacote separado que pode e será atualizado independentemente.
  • docker-cefaz da maneira Golang: Todas as dependências são puxadas para a árvore de código - fonte antes da construção e tudo forma um único pacote depois. Portanto, você sempre atualiza o docker com todas as suas dependências de uma vez.

O problema com a última abordagem é que vai contra muito do que o Debian / Ubuntu está tentando fazer.

Se todo mundo fizesse do jeito que docker-cefaz ...

... você teria 174 versões de muitas bibliotecas em seu sistema, que não apenas consomem muita memória, mas também tornam essencialmente impossível decidir se você tem a versão 7.6.5 da biblioteca XYZ com aquela horrível vulnerabilidade de segurança em algum lugar eles.
Muito menos fechar essa vulnerabilidade (ou todas as 109 instâncias dela).

Pior, é provável que uma das 174 versões seja a versão 5.4.3 do XYZ de três anos atrás, que tinha outra vulnerabilidade de segurança muito diferente, mas tão escancarada que o mundo há muito esqueceu, mas que ainda existirá felizmente em seu sistema.

Algumas observações:

  • Muitas páginas da web chamam de docker.io"desatualizadas". Isso porque ficou sem manutenção por cerca de um ano. Em agosto de 2019, esse não é mais o caso.
  • Aprendi tudo isso hoje aqui e agora vou mudar de uso docker-cepara uso docker.io- e provavelmente nunca mais voltarei.
  • Há uma razão pela qual o sistema de empacotamento Debian / Ubuntu é tão complicado. Um bom motivo.
Lutz Prechelt
fonte
4
encontrei esta resposta depois que docker-ce em 2 de meus nós travou enquanto outro nó com docker.io sobreviveu durante a atualização do apt.
Jingshao Chen
3
Isso me faz considerar o pacote docker.io favorito do Debian / Ubuntu. Além disso, está a apenas um de apt installdistância, enquanto para o docker-ce, sempre preciso ir aos documentos do Docker para consultar as etapas de instalação.
Wlad
2
Você pode querer mencionar as implicações de segurança do uso do docker.io - você não receberá patches de segurança assim que ele sair de manutenção novamente, e mesmo que não seja, você depende dos mantenedores para fazer o backport correto de cada patch de segurança.
Benni
2
Uma vantagem do docker-ce é que você obtém uma versão certificada, recebe a promessa da equipe do docker de que o pacote funcionará com as dependências agrupadas. Presumivelmente, haverá menos acusações se você tiver um problema. Os mantenedores debian do docker.io certificam que o docker roda na versão mais atual de todos os pacotes dependentes? A equipe do docker fez um trabalho bom o suficiente ao empacotar seus testes para que qualquer outra equipe possa certificar um lançamento? Não há nenhuma solução "melhor" aqui, apenas um equilíbrio de riscos, e você deve escolher quais riscos são mais importantes para você.
BobHy
@BobHy eu concordo, é uma troca. Apenas não se esqueça de mudar para docker.ioseus sistemas de produção que não têm atividade de desenvolvimento se e quando a Docker Inc. for pelo ralo ou parar de fazer atualizações regulares (!) docker-cePor algum outro motivo. O Debian tem uma reputação sólida a esse respeito: Mesmo que docker.iopare de receber atualizações mais uma vez, muitas bibliotecas ainda irão.
Lutz Prechelt