Apa docker.io dalam kaitannya dengan docker-ce dan docker-ee?

119

Sebelumnya, untuk menginstal buruh pelabuhan saya akan menggunakan

apt-get install docker.io

Namun, saya baru-baru ini memperhatikan dokumentasi untuk menginstal buruh pelabuhan, dan itu menggunakan buruh pelabuhan-ce. Saya telah mencoba menemukan perbedaan di antara keduanya, tetapi hasilnya kosong. Apa docker.io dalam kaitannya dengan docker-ce?

Will Parzybok
sumber
1
@zerkms Saya sempat bingung karena di situs resmi buruh pelabuhan tidak ada penyebutan docker.io. Apakah itu disusutkan?
Akan Parzybok
1
docker.iopaket dikelola oleh pengembang ubuntu. Pengembang Ubuntu tidak berafiliasi dengan "situs web buruh pelabuhan resmi". Jadi fakta bahwa situs buruh pelabuhan tidak mengacu pada dasarnya tidak ada artinya.
zerkms
1
@zerkmsApakah docker.io sudah diperbarui?
Will Parzybok
1
Periksa dan lihat? packages.ubuntu.com/…
zerkms
Ini sekarang benar-benar berfungsi lagi!
thoni56

Jawaban:

73

Versi lama dari biner Docker disebut docker atau docker-engine atau docker-io

paket docker-io masih merupakan nama yang digunakan oleh Debian / Ubuntu untuk rilis buruh pelabuhan yang disediakan di repo resmi mereka .

docker-ce adalah rilis bersertifikat yang disediakan langsung oleh docker.com dan juga dapat dibuat dari sumbernya .

Alasan utama menggunakan nama docker-io pada platform Debian / Ubuntu adalah untuk menghindari konflik nama dengan biner system-tray docker.

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

Docker memiliki versi enterprise (EE) dan versi Community Edition (CE) gratis

Sebelum menginstal Docker Community Edition (docker-ce dari docker.com), Anda mungkin perlu menghapus binari lama.

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

Perbandingan uji coba di 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])

The binari buruh pelabuhan-ce akan cenderung versi terbaru dan termasuk buruh pelabuhan-ce-cli.

lvolmar.dll
sumber
1
@Ivolmar Terima kasih banyak, jadi konyol untuk menggunakan docker.io daripada yang lebih baru?
Akan Parzybok
3
@AgusMaulana. Bergantung pada versi Debian atau Ubuntu Anda, Anda harus dapat menginstal versi CE baru dan menghapus binari versi lama
lvolmar
2
Di Ubuntu 19.04, versi docker.io sedikit lebih maju dari docker-ce (18.09.5 v. 18.06.3). Rilis vendor dan ppas biasanya lebih cepat dari rilis Ubuntu. Komentar dihargai tentang apakah saran untuk menggunakan ce over io masih berlaku.
Reece
7
2019-Mei-21 bingung ... apa yang harus digunakan di Ubuntu 18.04? apt-get install docker.ioterlihat jauh lebih nyaman daripada melakukan 10 langkah atau lebih untuk menginstal docker-ce :(
Wlad
1
Baru saja melakukan apt install docker.iodan mendapatkan Docker version 18.09.2, build 6247962... jadi apa masalahnya dengan buruh pelabuhan? Saya mengambil apa yang diberikan Ubuntu kepada saya.
Wlad
120

Waspadai buruh pelabuhan

Jawaban yang diterima di bawah kompleks.

docker-cedisediakan oleh docker.com, docker.iodisediakan oleh Debian.

Di permukaan, ini berarti Anda dapat menginstal langsung docker.io, sementara untuk docker-ceAnda harus memasang repositori eksternal dari docker.com terlebih dahulu.

Lebih penting lagi, meskipun kedua paket menyediakan versi Docker yang dirilis dengan benar, mereka memiliki struktur internal yang sangat berbeda :

  • docker.iomelakukannya dengan cara Debian (atau Ubuntu): Setiap ketergantungan eksternal adalah paket terpisah yang dapat dan akan diperbarui secara independen.
  • docker-cemelakukannya dengan cara Golang: Semua dependensi ditarik ke dalam pohon sumber sebelum build dan semuanya membentuk satu paket setelahnya. Jadi Anda selalu mengupdate buruh pelabuhan dengan semua dependensinya sekaligus.

Masalah dengan pendekatan yang terakhir adalah bahwa ia bertentangan dengan banyak hal yang coba dilakukan Debian / Ubuntu.

Jika semua orang melakukannya seperti docker-ceitu ...

... Anda akan memiliki 174 versi dari banyak pustaka di sistem Anda, yang tidak hanya menghabiskan banyak memori, mereka juga membuat pada dasarnya tidak mungkin untuk memutuskan apakah Anda memiliki versi 7.6.5 pustaka XYZ dengan kerentanan keamanan yang mengerikan di suatu tempat di antara mereka.
Jangankan menutup kerentanan itu (atau semua 109 kejadian yang Anda miliki).

Lebih buruk lagi, salah satu dari 174 versi kemungkinan adalah versi 5.4.3 dari XYZ pada tiga tahun lalu, yang memiliki satu lagi, sangat berbeda, tetapi kerentanan keamanan menganga yang telah lama dilupakan dunia tetapi itu akan tetap ada dengan bahagia di sistem Anda.

Beberapa komentar:

  • Banyak halaman web menyebutnya docker.io"ketinggalan jaman". Itu karena tidak dirawat selama sekitar satu tahun. Pada Agustus 2019, hal ini tidak berlaku lagi.
  • Saya mempelajari semua ini hari ini di sini dan sekarang akan beralih dari menggunakan docker-ceke menggunakan docker.io- dan mungkin tidak akan pernah kembali lagi.
  • Ada alasan mengapa sistem pengemasan Debian / Ubuntu sangat rumit. Alasan yang bagus.
Lutz Prechelt
sumber
4
menemukan jawaban ini setelah buruh pelabuhan di 2 dari node saya macet sementara node lain dengan docker.io bertahan saat upgrade apt.
Jingshao Chen
3
Ini membuat saya mempertimbangkan paket docker.io Debian / Ubuntu favorit. Terlebih lagi itu hanya satu apt installsementara untuk buruh pelabuhan saya selalu harus pergi ke dokumen Docker untuk mencari langkah-langkah instalasi.
Wlad
2
Anda mungkin ingin menyebutkan implikasi keamanan menggunakan docker.io - Anda tidak akan menerima patch keamanan segera setelah keluar dari pemeliharaan lagi, dan bahkan selama Anda tidak bergantung pada pemelihara dengan benar melakukan backport setiap patch keamanan.
Benni
2
Satu keuntungan dari buruh pelabuhan adalah Anda mendapatkan rilis bersertifikat, Anda mendapatkan janji tim buruh pelabuhan bahwa paket tersebut akan bekerja dengan dependensi yang dibundel. Agaknya, ada lebih sedikit tindakan menuding jika Anda memiliki masalah. Apakah pengelola debian dari docker.io menyatakan bahwa pekerja galangan berjalan pada versi terbaru dari semua paket dependen? Telah tim buruh pelabuhan melakukan pekerjaan yang cukup baik dari kemasan tes mereka bahwa setiap tim lain dapat mengesahkan sebuah rilis? Tidak ada solusi "terbaik" di sini, hanya keseimbangan risiko, dan Anda harus memilih risiko mana yang lebih penting bagi Anda.
BobHy
@BobHy Saya setuju, itu tradeoff. Jangan lupa untuk beralih ke docker.iodalam sistem produksi Anda yang tidak memiliki aktivitas pengembangan jika dan ketika Docker Inc. gagal atau berhenti membuat pembaruan rutin (!) Ke docker-ceuntuk beberapa alasan lain. Debian memiliki reputasi yang kuat dalam hal ini: Bahkan jika docker.ioharus berhenti mendapatkan pembaruan sekali lagi, banyak pustaka yang masih akan melakukannya.
Lutz Prechelt