¿Qué es docker.io en relación con docker-ce y docker-ee?

119

Anteriormente, para instalar Docker usaba

apt-get install docker.io

Sin embargo, recientemente noté la documentación para instalar docker y usa docker-ce. He tratado de encontrar la diferencia entre los dos, pero no he encontrado nada. ¿Qué es docker.io en relación con docker-ce?

Will Parzybok
fuente
1
@zerkms Estaba confundido porque el sitio web oficial de Docker no menciona docker.io. ¿Está depreciado?
Will Parzybok
1
docker.ioEl paquete es mantenido por desarrolladores de ubuntu. Los desarrolladores de Ubuntu no están afiliados al "sitio web oficial de Docker". Entonces, el hecho de que el sitio web de Docker no se refiera a él no significa básicamente nada.
zerkms
1
@zerkms¿Está docker.io actualizado?
Will Parzybok
1
Comprobar y ver packages.ubuntu.com/…
zerkms
¡Esto ahora funciona totalmente de nuevo!
thoni56

Respuestas:

73

Las versiones anteriores del binario de Docker se llamaban docker o docker-engine o docker-io

El paquete docker-io sigue siendo el nombre utilizado por Debian / Ubuntu para la versión de Docker proporcionada en sus repositorios oficiales .

docker-ce es una versión certificada proporcionada directamente por docker.com y también se puede crear desde la fuente .

La razón principal para usar el nombre docker-io en la plataforma Debian / Ubuntu fue evitar un conflicto de nombre con el binario de la bandeja del sistema de la ventana acoplable.

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

Docker tiene una versión empresarial (EE) y una versión comunitaria gratuita (CE)

Antes de instalar Docker Community Edition (docker-ce de docker.com), es posible que deba eliminar los archivos binarios más antiguos.

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

Comparación de ejecución en seco en 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])

Los binarios de docker-ce tenderán a ser las últimas versiones e incluirán docker-ce-cli.

lvolmar
fuente
1
@Ivolmar Muchas gracias, entonces, ¿sería una tontería usar docker.io sobre uno de los más nuevos?
Will Parzybok
3
@WillParzybok Correcto. Dependiendo de su versión de Debian o Ubuntu, debería poder instalar una nueva versión de CE y eliminar los binarios de la versión anterior
lvolmar
2
En Ubuntu 19.04, la versión docker.io está ligeramente por delante de docker-ce (18.09.5 v. 18.06.3). Los lanzamientos de proveedores y los ppas suelen estar por delante de los lanzamientos de Ubuntu. Comentarios apreciados sobre si el consejo de usar ce sobre io todavía se aplica.
Reece
7
2019-May-21 confundido ... ¿qué usar en Ubuntu 18.04? apt-get install docker.ioparece mucho más cómodo que seguir los 10 pasos o más para instalar docker-ce :(
Wlad
1
Solo lo hice apt install docker.ioy obtuve Docker version 18.09.2, build 6247962... entonces, ¿cuál es el problema con Docker-ce? Tomo lo que me da Ubuntu.
Wlad
120

Tenga cuidado con Docker-ce

La respuesta aceptada es poco compleja.

docker-cees proporcionado por docker.com, docker.ioes proporcionado por Debian.

En la superficie, esto significa que puede instalarlo de docker.ioinmediato, mientras docker-ceque debe adjuntar un repositorio externo de docker.com de antemano.

Sin embargo, lo que es más importante, aunque ambos paquetes proporcionan versiones de Docker publicadas correctamente, tienen una estructura interna muy diferente :

  • docker.iolo hace de la manera Debian (o Ubuntu): cada dependencia externa es un paquete separado que puede y será actualizado de forma independiente.
  • docker-celo hace a la manera de Golang: todas las dependencias se introducen en el árbol de fuentes antes de la compilación y luego todo forma un solo paquete. Por lo tanto, siempre actualiza Docker con todas sus dependencias a la vez.

El problema con este último enfoque es que va en contra de gran parte de lo que Debian / Ubuntu están tratando de hacer.

Si todo el mundo lo hiciera como lo docker-cehace ...

... tendría 174 versiones de muchas bibliotecas en su sistema, que no solo consumen mucha memoria, sino que también hacen que sea esencialmente imposible decidir si tiene esa versión 7.6.5 de la biblioteca XYZ con esa horrible vulnerabilidad de seguridad en algún lugar entre ellos.
Y mucho menos cerrar esa vulnerabilidad (o las 109 instancias que tiene).

Peor aún, es probable que una de las 174 versiones sea la versión 5.4.3 de XYZ hace tres años, que tenía otra vulnerabilidad de seguridad muy diferente, pero igual de enorme, que el mundo ha olvidado hace mucho tiempo pero que seguirá existiendo felizmente. en su sistema.

Algunas observaciones:

  • Muchas páginas web lo llaman docker.io"desactualizado". Eso se debe a que no se le dio mantenimiento durante aproximadamente un año. A partir de agosto de 2019, este ya no es el caso.
  • Aprendí todo esto hoy aquí y ahora pasaré de usar docker-cea usar docker.io, y presumiblemente nunca volveré.
  • Hay una razón por la que el sistema de empaquetado Debian / Ubuntu es tan complicado. Una buena razón.
Lutz Prechelt
fuente
4
Encontré esta respuesta después de docker-ce en 2 de mis nodos atascados mientras otro nodo con docker.io sobrevivió mientras se actualizaba apt.
Jingshao Chen
3
Esto me hace cosiderarme con el paquete docker.io de Debian / Ubuntu favorito. Más sobre esto es solo uno de apt installdistancia, mientras que para docker-ce siempre tengo que ir a los documentos de Docker para buscar los pasos de instalación.
Wlad
2
Es posible que desee mencionar las implicaciones de seguridad del uso de docker.io: no recibirá parches de seguridad tan pronto como deje de estar en mantenimiento nuevamente, e incluso mientras no confíe en que los mantenedores respalden correctamente cada parche de seguridad.
Benni
2
Una ventaja de docker-ce es que obtiene una versión certificada, obtiene la promesa del equipo de docker de que el paquete funcionará con las dependencias incluidas. Presumiblemente, hay menos acusaciones con el dedo si tiene un problema. ¿Los mantenedores de Debian de docker.io certifican que Docker se ejecuta en la versión más actual de todos los paquetes dependientes? ¿El equipo de Docker hizo un buen trabajo al empaquetar sus pruebas para que cualquier otro equipo pueda certificar un lanzamiento? Aquí no existe la "mejor" solución, solo un equilibrio de riesgos, y debe elegir qué riesgos son más importantes para usted.
BobHy
@BobHy Estoy de acuerdo, es una compensación. Simplemente no olvide cambiar a docker.iosus sistemas de producción que no tienen actividad de desarrollo si Docker Inc. se va por el desagüe o deja de hacer actualizaciones regulares (!) docker-cePor alguna otra razón. Debian tiene una sólida reputación a este respecto: incluso si docker.iodejara de recibir actualizaciones una vez más, las muchas bibliotecas aún lo harán.
Lutz Prechelt