Rilis terbaru RHEL 8 / CentOS 8. Red Hat telah membangun alatnya sendiri, buildah
dan podman
, yang bertujuan agar kompatibel dengan gambar buruh pelabuhan yang ada dan bekerja tanpa bergantung pada daemon, memungkinkan pembuatan wadah sebagai pengguna biasa, tanpa memerlukan izin khusus (dengan beberapa batasan:misalnya pada saat penulisan, masih tidak mungkin untuk memetakan port host ke container tanpa hak istimewa).
Namun, beberapa alat khusus masih belum ada:setara dengan docker-compose
, misalnya belum ada. Dalam tutorial ini kita akan melihat cara menginstal dan menjalankan Docker CE asli di Rhel8 dengan menggunakan repositori Docker resmi untuk CentOS7.
Dalam tutorial ini Anda akan mempelajari:
- Cara mengaktifkan repositori docker-ce di RHEL 8 / CentOS 8
- Cara menginstal docker dan docker-compose di RHEL 8 / CentOS 8
Docker diinstal pada RHEL 8 / CentOS 8
Persyaratan dan Konvensi Perangkat Lunak yang Digunakan
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | RHEL 8 / CentOS 8 |
Perangkat Lunak | Docker versi 18.09.2 |
Lainnya | Izin untuk menjalankan perintah dengan hak akses root. |
Konvensi | # – membutuhkan perintah linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ – membutuhkan perintah linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Apa itu Docker?
Docker adalah proyek open source yang memungkinkan pembuatan dan distribusi aplikasi di dalam containers
, yang merupakan lingkungan standar yang dapat dengan mudah direplikasi, terlepas dari sistem host. Sementara di Red Hat Enterprise Linux 7 Docker secara resmi didukung, pada rilis baru sistem operasi open source ini, telah digantikan oleh serangkaian alat lain yang dikembangkan oleh Red Hat sendiri:buildah
dan podman
.
Dengan menggunakan repositori eksternal, bagaimanapun, masih mungkin untuk menginstal Docker CE (Edisi Komunitas). Dalam tutorial ini kita akan melihat cara menginstal repositori ini; namun perhatikan, bahwa itu awalnya dimaksudkan untuk CentOS 7
(klon RHEL), dan versi komunitas Docker tidak memiliki dukungan resmi untuk Red Hat Enterprise Linux. Karena itu, ada masalah – kami membahasnya di bawah.
Menambahkan repositori eksternal
Karena Docker tidak tersedia di RHEL 8 / CentOS 8, kita perlu menambahkan repositori eksternal untuk mendapatkan perangkat lunak. Dalam hal ini kita akan menggunakan repositori resmi Docker CE CentOS:ini adalah, pada saat penulisan, satu-satunya cara untuk menginstal Docker CE pada RHEL 8 / CentOS 8.
dnf config-manager
utilitas mari kita, antara lain, dengan mudah mengaktifkan atau menonaktifkan repositori di distribusi kita. Secara default, hanya appstream
dan baseos
repositori diaktifkan di Rhel8; kita perlu menambahkan dan mengaktifkan juga docker-ce
repo. Yang perlu kita lakukan untuk menyelesaikan tugas ini, adalah menjalankan perintah berikut:
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Kami dapat memverifikasi bahwa repositori telah diaktifkan, dengan melihat output dari perintah berikut:
$ sudo dnf repolist -v
Perintah di atas akan mengembalikan informasi rinci tentang semua repositori yang diaktifkan. Inilah yang harus Anda lihat saat ini:
Repo-id : docker-ce-stable Repo-name : Docker CE Stable - x86_64 Repo-revision: 1549905809 Repo-updated : Mon 11 Feb 2019 06:23:29 PM CET Repo-pkgs : 30 Repo-size : 618 M Repo-baseurl : https://download.docker.com/linux/centos/7/x86_64/stable Repo-expire : 172,800 second(s) (last: Mon 18 Feb 2019 10:23:54 AM CET) Repo-filename: /etc/yum.repos.d/docker-ce.repo Repo-id : rhel-8-for-x86_64-appstream-rpms Repo-name : Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) Repo-revision: 1542158694 Repo-updated : Wed 14 Nov 2018 02:24:54 AM CET Repo-pkgs : 4,594 Repo-size : 4.9 G Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/appstream/os Repo-expire : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:55 AM CET) Repo-filename: /etc/yum.repos.d/redhat.repo Repo-id : rhel-8-for-x86_64-baseos-rpms Repo-name : Red Hat Enterprise Linux 8 for x86_64 - BaseOS Beta (RPMs) Repo-revision: 1542158719 Repo-updated : Wed 14 Nov 2018 02:25:19 AM CET Repo-pkgs : 1,686 Repo-size : 925 M Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/baseos/os Repo-expire : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:56 AM CET) Repo-filename: /etc/yum.repos.d/redhat.repo Total packages: 6,310
Menginstal docker-ce
docker-ce-stable
repositori sekarang diaktifkan di sistem kami. Repositori berisi beberapa versi docker-ce
package, untuk menampilkan semuanya, kita dapat menjalankan:
$ dnf list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
Versi apa yang harus diinstal? Nah, Red Hat tampaknya telah memblokir instalasi containerd.io
> 1.2.0-3.el7
, yang merupakan ketergantungan docker-ce
. Karena itu, cukup jalankan sudo dnf install docker-ce
perintah, tidak akan berhasil. Seperti yang akan kita lihat sebentar lagi, masih mungkin untuk mengatasi masalah ini; sekali docker-ce
diinstal, namun, masalah lain menjadi jelas:selama firewalld
, manajer firewall sistem diaktifkan, DNS resolution
di dalam wadah buruh pelabuhan tidak berfungsi.
Ini, tentu saja, merupakan masalah kritis. Namun, jika Anda masih ingin melanjutkan penginstalan, berikut adalah metode yang mungkin dapat digunakan untuk menghindari masalah dependensi:
- Instal versi spesifik
docker-ce
yang membutuhkan versicontainerd.io
yang dapat diinstal paket; - Paksa penginstalan dengan memberikan
--nobest
pilihan - Instal
containerd.io
terbaru yang tersedia rpm secara manual;
Instal versi docker-ce tertentu
Pada saat penulisan versi docker-ce
yang terinstal tanpa masalah adalah:
- docker-ce-3:18.09.1-3.el7
- docker-ce-18.06.3.ce-3.el7;
- docker-ce-17.12.1.ce-1.el7.centos
Untuk menginstal versi tertentu, yang harus kita lakukan adalah memberikan nama paket yang sepenuhnya memenuhi syarat, misalnya:
$ sudo dnf install docker-ce-3:18.09.1-3.el7
Paksa instalasi docker-ce dengan opsi –nobest
Biasanya, saat menginstal sebuah paket, kandidat terbaik yang tersedia dipilih dari repositori. Dalam hal ini, misalnya, penginstalan versi terbaru docker-ce
dicoba (dan gagal). Dengan menggunakan --nobest
opsi, kita dapat mengubah perilaku ini sehingga versi pertama docker-ce
dengan dependensi yang memuaskan dipilih sebagai “fallback”, dalam hal ini 3:18.09.1-3.el7
.
$ sudo dnf install --nobest docker-ce Dependencies resolved. Problem: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed - cannot install the best candidate for the job - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded - package containerd.io-1.2.2-3.el7.x86_64 is excluded - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded ======================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================= Installing: docker-ce x86_64 3:18.09.1-3.el7 docker-ce-stable 19 M Installing dependencies: containerd.io x86_64 1.2.0-3.el7 docker-ce-stable 22 M docker-ce-cli x86_64 1:19.03.2-3.el7 docker-ce-stable 39 M container-selinux noarch 2:2.94-1.git1e99f1d.module+el8.0.0+4017+bbba319f rhel-8-for-x86_64-appstream-rpms 43 k tar x86_64 2:1.30-4.el8 rhel-8-for-x86_64-baseos-rpms 838 k libcgroup x86_64 0.41-19.el8 rhel-8-for-x86_64-baseos-rpms 70 k python3-policycoreutils noarch 2.8-16.1.el8 rhel-8-for-x86_64-baseos-rpms 2.2 M python3-libsemanage x86_64 2.8-5.el8 rhel-8-for-x86_64-baseos-rpms 127 k python3-setools x86_64 4.2.0-2.el8 rhel-8-for-x86_64-baseos-rpms 598 k checkpolicy x86_64 2.8-2.el8 rhel-8-for-x86_64-baseos-rpms 338 k python3-audit x86_64 3.0-0.10.20180831git0047a6c.el8 rhel-8-for-x86_64-baseos-rpms 85 k policycoreutils-python-utils noarch 2.8-16.1.el8 rhel-8-for-x86_64-baseos-rpms 228 k Skipping packages with broken dependencies: docker-ce x86_64 3:19.03.2-3.el7 docker-ce-stable 24 M Transaction Summary ======================================================================================================================================================= Install 12 Packages Skip 1 Package Total download size: 85 M Installed size: 351 M Is this ok [y/N]:
Instal paket containerd.io terbaru yang tersedia secara manual
Jika kita benar-benar perlu menginstal versi terbaru docker-ce
, kita dapat menginstal versi containerd.io
yang diperlukan secara manual, dengan menjalankan:
$ sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
Setelah paket terinstal, kita cukup menginstal docker-ce
terbaru :
$ sudo dnf install docker-ce Dependencies resolved. ======================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================= Installing: docker-ce x86_64 3:19.03.2-3.el7 docker-ce-stable 24 M Installing dependencies: docker-ce-cli x86_64 1:19.03.2-3.el7 docker-ce-stable 39 M tar x86_64 2:1.30-4.el8 rhel-8-for-x86_64-baseos-rpms 838 k libcgroup x86_64 0.41-19.el8 rhel-8-for-x86_64-baseos-rpms 70 k Transaction Summary ======================================================================================================================================================= Install 4 Packages Total download size: 65 M Installed size: 275 M Is this ok [y/N]:
Opsi ini kurang nyaman karena containerd.io
paket tidak diinstal sebagai ketergantungan docker-ce
, oleh karena itu tidak akan dihapus secara otomatis ketika yang terakhir dihapus dari sistem.
Metode apa pun yang kami gunakan untuk menginstal docker-ce
, seperti yang dikatakan sebelumnya, untuk membuat DNS resolution
bekerja di dalam wadah Docker, kita harus menonaktifkan firewalld (sistem reboot mungkin juga diperlukan):
$ sudo systemctl disable firewalld
Mulai dan aktifkan daemon buruh pelabuhan
Sekali docker-ce
terinstal, kita harus memulai dan mengaktifkan daemon buruh pelabuhan, sehingga juga akan diluncurkan secara otomatis saat boot. Perintah yang perlu kita jalankan adalah sebagai berikut:
$ sudo systemctl enable --now docker
Pada titik ini, kami dapat mengonfirmasi bahwa daemon aktif dengan menjalankan:
$ systemctl is-active docker active
Demikian pula, kita dapat memeriksa apakah itu diaktifkan saat boot, dengan menjalankan:
$ systemctl is-enabled docker enabled
Memasang docker-compose
Compose Docker adalah paket yang sangat berguna yang memungkinkan kita mengelola aplikasi multi-kontainer, seperti misalnya yang didasarkan pada tumpukan LAMP, di mana setiap bagian lingkungan (PHP, Apache, MariaDB) disediakan oleh wadah khusus (jika Anda tertarik dalam subjek, lihat tutorial kami tentang membuat tumpukan lampu berbasis buruh pelabuhan). Paket tidak tersedia di Rhel8, juga tidak ada yang setara untuk digunakan dengan alat Rhel. Namun, Anda dapat menginstalnya dengan banyak cara:teruslah membaca dan putuskan mana yang paling cocok untuk Anda.
Instalasi global
Cara kita menginstal docker-compose
bervariasi tergantung apakah kita ingin menginstalnya secara global atau hanya untuk satu pengguna. Pada saat penulisan, satu-satunya cara untuk menginstalnya secara global adalah dengan mengunduh biner dari halaman github proyek:
$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose
Setelah biner diunduh, kami memindahkannya ke /usr/local/bin
dan kami membuatnya dapat dieksekusi:
$ sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose
/usr/local
hierarki tidak dipilih secara acak. Struktur direktori ini dibuat untuk digunakan untuk file yang diinstal oleh administrator lokal secara manual (untuk perangkat lunak yang dikompilasi dari sumber, misalnya), untuk memastikan pemisahan dari perangkat lunak yang diinstal dengan manajer paket sistem.
Meskipun mungkin bagi pengguna biasa untuk menjalankan perintah terkait buruh pelabuhan jika dia adalah bagian dari docker
group (grup dibuat secara otomatis ketika kita menginstal docker-ce), secara default mereka harus dijalankan dengan hak akses root untuk alasan keamanan. Ketika kita perlu melakukan yang terakhir, karena /usr/local/bin
direktori tidak ada di PATH
pengguna root , kita perlu memanggil biner yang menentukan lokasinya atau menambahkan /usr/local/bin
ke PATH
diri. Opsi pertama adalah yang saya rekomendasikan dalam kasus ini.
Instalasi per pengguna
Jika pengguna kami adalah bagian dari docker
grup, dan dengan demikian diizinkan untuk menjalankan perintah buruh pelabuhan, dan karena docker-compose
tersedia sebagai paket python, kami juga dapat menginstalnya menggunakan pip
, pengelola paket python. Pertama, pastikan pip itu sendiri terinstal:
$ sudo dnf install python3-pip
Untuk mendapatkan komposisi buruh pelabuhan, kami menjalankan:
$ pip3.6 install docker-compose --user
Harap perhatikan bahwa meskipun mungkin menjalankan pip sebagai root untuk menginstal paket secara global, ini tidak disarankan dan sangat tidak disarankan.
Menguji buruh pelabuhan
Kami menginstal docker dan docker-compose, sekarang untuk memeriksa apakah semuanya berfungsi seperti yang diharapkan, kami dapat mencoba membuat gambar dan menjalankan wadah:dalam hal ini kami akan menggunakan httpd
resmi satu. Yang harus kita lakukan adalah meluncurkan perintah berikut:
sudo docker run --rm --name=linuxconfig-test -p 80:80 httpd
Sejak httpd
gambar tidak ada secara lokal itu akan secara otomatis diambil dan dibangun. Akhirnya, wadah berdasarkan itu akan diluncurkan di latar depan (akan dihapus secara otomatis saat dihentikan). Kita seharusnya dapat melihat It works!
pesan ketika kami mencapai ip mesin kami melalui browser.
Kesimpulan
Red Hat Enterprise Linux 8 tidak mendukung Docker:pada distribusi ini telah digantikan oleh alat Red Hat sendiri seperti buildah
dan podman
, yang kompatibel dengan Docker tetapi tidak memerlukan arsitektur server/klien untuk dijalankan. Menggunakan alat asli, jika memungkinkan, selalu merupakan cara yang disarankan, tetapi karena suatu alasan Anda mungkin masih ingin menginstal Docker asli. Dalam tutorial ini, kita melihat bagaimana mungkin untuk menginstal Docker CE
di Rhel8, dengan menggunakan repositori Docker resmi untuk CentOS7, yang merupakan tiruan yang 100% kompatibel.
Ini bukan solusi ideal, dan seperti yang kita lihat, saat ini, beberapa solusi diperlukan untuk membuat Docker bekerja di RHEL8. Jika beberapa masalah baru muncul, atau solusi yang lebih baik untuk masalah yang disebutkan di atas ditemukan, artikel ini akan diperbarui. Pantau terus.