Jika Anda tidak tahu apa itu registri kontainer, jangan khawatir. Ini akan menjadi jelas setelah Anda benar-benar mendorong gambar kontainer pertama Anda ke dalam instance GitLab. Untuk saat ini, anggap mereka sebagai repositori untuk gambar kontainer Anda. Ini bukan wadah yang berjalan tetapi hanya gambar (data biasa) yang ada di instance GitLab jarak jauh.
Mengapa Anda menginginkan registri wadah GitLab??
Kemungkinan aplikasi Anda dikemas baik sebagai gambar Docker tunggal atau kumpulan gambar tersebut. Ini berarti versi yang berbeda akan dikaitkan dengan gambar yang berbeda dan registri penampung akan membantu Anda melacaknya satu per satu serta melihat mana yang akan digabungkan bersama dalam rilis tertentu.
Registri adalah untuk wadah, apa repositori untuk kode sumber dan GitLab adalah satu tempat untuk menangani semuanya.
Prasyarat
- Instance GitLab yang berfungsi melalui HTTPS
- Akses root ke instance
- Akses untuk mengubah data DNS nama domain Anda
Kami akan menganggap GitLab kami sedang berjalan gitlab.contoh.com .
Registri DNS dan sertifikat TLS
Anda harus menjadi pengguna root untuk mengaktifkan fitur registry container di seluruh instance GitLab. Pengguna individu kemudian dapat memilih untuk menggunakan fitur ini di proyek masing-masing, jika mereka menginginkannya. Ada dua cara untuk melakukannya:
- Gunakan kembali nama domain dan sertifikat TLS yang ada untuk gitlab.contoh.com dan jalankan registri pada port yang berbeda.
- Tunjuk nama domain lain, misalkan, pendaftaran.gitlab.contoh.com ke alamat IP yang sama tempat GitLab berjalan dan konfigurasikan registri di sana.
Mari kita pergi dengan opsi kedua karena jauh lebih profesional.
Langkah 1: Tambahkan catatan A untuk pendaftaran.gitlab.contoh.com menunjuk ke IP yang sama tempat instance GitLab Anda berjalan.
Langkah 2: Hentikan layanan gitlab yang berjalan di server Anda.
$ sudo gitlab-ctl stopLangkah 3: Tambahkan klien ACME certbot's PPA ke sistem Anda dan instal certbot.
$ sudo add-apt-repository ppa:certbot/certbot$ sudo apt update
$ sudo apt install certbot
Langkah 4: Dapatkan sertifikat dari Let's Encrypt.
$ certbot pastiAnda akan melihat pesan seperti:
“'
Bagaimana Anda ingin mengautentikasi dengan ACME CA?
--
1: Putar server web sementara (mandiri)
2: Tempatkan file di direktori webroot (webroot)
--
Pilih nomor yang sesuai [1-2] lalu [enter] (tekan 'c' untuk membatalkan): 1
“'
Ini kemudian akan meminta email Anda, meminta Anda untuk menyetujui persyaratan layanan mereka, dan, yang paling penting, menanyakan nama domain Anda yang akan pendaftaran.gitlab.contoh.com dalam contoh kasus kami. Anda akan mendapatkan pesan yang mengatakan apakah sertifikat diperoleh atau tidak. Jika ya, lanjutkan ke Langkah 5
Langkah 5: Sekarang setelah kita memiliki sertifikat, saatnya untuk menempatkannya di bawah direktori terkait GitLab.
$cp /etc/letsencrypt/live/registry.gitlab.contoh.com/fullchain.pem/etc/gitlab/ssl/registry.gitlab.contoh.crt
$cp /etc/letsencrypt/live/registry.gitlab.contoh.com/privkey.pem
/etc/gitlab/ssl/registry.gitlab.contoh.kunci
Amankan izin pada mereka:
$ chmod 600 /etc/gitlab/ssl/registry.gitlab.contoh.com.*Seperti tutorial lainnya, pastikan Anda mengganti contoh.com dengan nama domain Anda yang sudah ada. Karena itulah nama direktorinya, tempat certbot menyimpan sertifikat.
Langkah 6: Edit konfigurasi GitLab. Buka filenya /etc/gitlab/gitlab.rb dan tambahkan baris berikut ke bagian bawahnya:
registry_external_url 'https://registry.gitlab.contoh.com'Jika Anda telah melakukan semuanya dengan hati-hati, bagian paling rumit dari pengaturan selesai! Anda sekarang akan memiliki dan menjalankan registri Kontainer, jalankan saja:
$ sudo gitlab-ctl konfigurasi ulang$ sudo gitlab-ctl start
Mengaktifkan Registry dan Mendorong Gambar
Sekarang setelah kita memiliki Container Registry, mari buat proyek baru menggunakan UI web GitLab dan verifikasi bahwa itu berfungsi.
Di kolom sebelah kiri Anda dapat melihat bagian Registry. Anda dapat mengkliknya untuk melihat petunjuk terperinci tentang cara masuk dan memasukkan gambar ke dalamnya. Mari kembali ke desktop lokal kita, yang seharusnya sudah menginstal Docker di dalamnya.
Kita dapat menggunakannya untuk membangun wadah hello-world sederhana dan mendorongnya ke registri ini. Di sistem lokal Anda, buat folder baru:
$cd ~$mkdir sample_container
Di dalamnya mari kita buat file bernama file docker dan tambahkan konten berikut ke dalamnya:
DARI ubuntu: terbaru## Perintah khusus Anda di sini
Anda dapat menyimpan Dockerfile Anda hanya dengan baris pertama. Ini akan menjadi wadah ubuntu biasa. Sekarang Anda membuatnya dengan tag yang bermakna (kami akan menggunakan tag proyek saya yang sama dengan nama proyek GitLab kami, ini penting). Di direktori yang sama jalankan:
$ docker build -t registri.gitlab.contoh.com/Ingatlah untuk mengganti nama pengguna GitLab Anda alih-alih
Itu hanya membuat wadah Ubuntu bersama dengan mengambil gambar. Gambar ini yang didorong. Jika Anda memodifikasi wadah dan membuat gambar baru dengannya (menggunakan komit buruh pelabuhan perintah itu akan menjadi gambar baru). Mari dorong gambar vanilla ubuntu ke registri kami.
Pertama kita harus login menggunakan username dan password Gitlab kita:
$ pendaftaran masuk buruh pelabuhan.gitlab.contoh.comLalu lari:
$ docker build -t registri.gitlab.contoh.com/root/proyek-saya .$ docker push registri.gitlab.contoh.com/root/proyek-saya
Jika Anda tidak yakin apa tag penampung Anda seharusnya, kunjungi halaman registri proyek Anda dan akan ada instruksi yang jelas untuk itu. Jika perintah docker push telah bekerja dengan baik, Anda dapat melihat gambar docker baru diunggah (atau didorong) di instance GitLab Anda. Seperti yang ditunjukkan dalam kasus saya:
Kesimpulan
Kontrol versi jauh lebih dari sekadar manajemen kode sumber. Ini terus ditingkatkan untuk mengakomodasi berbagai tuntutan yang mungkin diperlukan oleh setiap proyek perangkat lunak secara tidak terduga. Registri kontainer hanyalah puncak gunung es. Anda dapat memiliki saluran CD/CI, manajemen konfigurasi lanjutan, otorisasi melalui token, dan banyak fungsi lain yang diaktifkan di GitLab. Semoga Anda mempelajari sesuatu yang baru tentang teknologi luar biasa ini dalam tutorial ini.
Beri tahu kami jika ada sesuatu yang Anda ingin kami liput!