Untuk pengembangan CI/CD yang lancar menggunakan platform buruh pelabuhan, pertimbangkan untuk menggunakan server registri buruh pelabuhan yang dihosting sendiri. Registri Docker adalah repositori tempat Anda dapat menyimpan gambar buruh pelabuhan Anda dan menariknya untuk menjalankan aplikasi di server. Untuk pengiriman yang lebih cepat serta infrastruktur yang aman, disarankan untuk menyiapkan registri pribadi buruh pelabuhan Anda sendiri untuk menyimpan gambar buruh pelabuhan Anda dan mendistribusikannya di antara organisasi. Pada artikel ini, kita akan mempelajari cara mengatur registri buruh pelabuhan pribadi di Ubuntu 20.04
Prasyarat
- Akun pengguna dengan hak istimewa sudo
- Server untuk registri Docker
- Nginx di server Docker Registry
- Server klien
- Docker dan Docker-Compose di kedua server.
Registry Docker Pribadi
Docker Registry adalah aplikasi sisi Server yang memungkinkan Anda untuk menyimpan gambar buruh pelabuhan Anda secara lokal ke dalam satu lokasi terpusat. Dengan menyiapkan server registri buruh pelabuhan Anda sendiri, Anda dapat menarik dan mendorong gambar buruh pelabuhan tanpa harus terhubung ke hub Docker, menghemat bandwidth dan mencegah Anda dari ancaman keamanan.
Baca Juga :Cara Memasang dan Menggunakan Docker di Ubuntu 20.04 / 20.10
Sebelum Anda mulai
Sebelum memulai, saya memastikan bahwa Anda telah menginstal Docker dan Docker-Compose di server klien dan server registri lokal. Untuk memverifikasi bahwa Anda telah menginstal perangkat lunak yang diperlukan, Anda dapat menjalankan perintah berikut untuk memeriksa versi perangkat lunak.
$ versi buruh pelabuhan
$ versi penulisan buruh pelabuhan
Selain itu, Anda perlu memastikan bahwa layanan buruh pelabuhan dimulai dan diatur untuk diaktifkan saat boot:
$ sudo systemctl start docker$ sudo systemctl enable docker
Instal dan Konfigurasikan Registri Docker Pribadi
Untuk mengonfigurasi Registri Docker Pribadi, ikuti langkah-langkahnya:
Buat Direktori Registri
Konfigurasikan server Anda yang akan meng-host registri pribadi. Buat direktori baru yang akan menyimpan semua file konfigurasi yang diperlukan.
Gunakan perintah berikut untuk membuat direktori proyek baru 'my-registry' dan dua sub direktori 'nginx' dan 'auth'. Anda dapat memiliki asumsi Anda sendiri untuk nama proyek.
$ mkdir -p my-registry/{nginx, auth}
Sekarang navigasikan ke direktori proyek dan buat direktori baru di dalam nginx sebagai:
$ cd my-registry/$ mkdir -p nginx/{conf.d/, ssl}
Buat skrip dan layanan Docker-Compose
Anda perlu membuat skrip docker-compose.yml baru yang mendefinisikan versi dan layanan docker-compose yang diperlukan untuk menyiapkan registri pribadi.
Buat file baru “docker-compose.yml” di dalam direktori “my-registry” dengan editor vi.
$ vi docker-compose.yml
Tentukan layanan Anda di file komposisi buruh pelabuhan sebagai:
layanan # # Registry:Gambar:Restistry:2 Restart:Selalu port:"5000:5000" Lingkungan:Registry_Auth:HTPasswd Registry_Auth_htpasswd_Realm:Registry-Realm Registry_Path:/Auth/Registry.Passwd Registry_rootDirectory:/ Data Volume:- myregistrydata:/data - ./auth:/auth networks: - mynet#Nginx Service nginx: image:nginx:alpine container_name:nginx mulai ulang:kecuali dihentikan tty:true port: "80: " "80:" volumes: - ./nginx/conf.d/:/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ networks: - mynet#Docker Networksnetworks: mynet: driver:bridge# Volumesvolumes: myregistrydata: driver:local
Simpan dan tutup file
Siapkan penerusan port nginx
Kita perlu membuat konfigurasi virtual host nginx untuk layanan web nginx. Buka direktori nginx/conf.d/ yang dibuat pada langkah di atas.
$ cd nginx/conf.d/
Sekarang buat file host virtual nginx dengan editor teks Anda. Dalam contoh ini saya akan menamainya myregistry.conf. Anda dapat memiliki asumsi Anda sendiri.
$ vi myregistry.conf
Tambahkan konten berikut:
upstream docker-registry { server registry:5000;}server { listen 80; server_name registry.linuxtechi.com; return 301 https://registry.linuxtechi.com$request_uri;}server { mendengarkan 443 ssl http2; server_name registry.linuxtechi.com; ssl_certificate /etc/nginx/ssl/certificate.crt; ssl_certificate_key /etc/nginx/ssl/private.key; # File log untuk Debug error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; lokasi / { if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) { return 404; } proxy_pass http://docker-registry; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 900; }}
Ganti nama domain Anda dengan parameter server_name dan simpan file tersebut.
Meningkatkan ukuran upload file nginx
Secara default, nginx memiliki batas 1mb untuk mengunggah file. Karena gambar buruh pelabuhan melebihi batas ini, Anda perlu menambah ukuran unggahan dalam file konfigurasi nginx. Dalam contoh ini, saya akan membuat file konfigurasi nginx tambahan dengan batas upload 2GB .
Buka direktori konfigurasi nginx
$ cd myregistry/nginx/conf.d$ vi tambahan.conf
Tambahkan baris berikut dan simpan file
client_max_body_size 2G;
Konfigurasikan sertifikat SSL dan Otentikasi
Setelah membuat file konfigurasi nginx, sekarang kita perlu menyiapkan ssl certificate. Anda harus memiliki file sertifikat ssl yang valid dengan kunci pribadi. Salin file sertifikat dan kunci pribadi Anda ke direktori nginx/ssl sebagai:
$ cd myregistry/nginx/ssl$ cp /your-ssl-certificate-path/certificate.crt .$ cp /your-private-key-path/private.key .
Jika Anda tidak memiliki sertifikat ssl yang dibeli secara valid, Anda dapat membuat sendiri sertifikat ssl yang ditandatangani sendiri. Ingatlah bahwa sertifikat ssl yang ditandatangani sendiri tidak disarankan untuk lingkungan produksi. Untuk membuat sertifikat ssl yang ditandatangani sendiri, jalankan perintah berikut:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \ /etc/ssl/private/nginx-private.key -out /etc/ssl/certs/nginx-certificate.crtAnda akan diminta untuk mengirimkan beberapa detail seperti, Kode negara, nama domain, id email. Isi detailnya dan lanjutkan.
Sekarang siapkan otentikasi Dasar sebagai:
Buka direktori auth
$ cd authMinta file kata sandi baru bernama registry.password untuk pengguna Anda. Dalam contoh ini saya akan menggunakan pengguna linuxtechi.
$ htpasswd -Bc registry.password linuxtechiJika Anda mendapatkan 'htpasswd not found command', jalankan perintah berikut di terminal Anda dan coba lagi.
$ sudo apt install apache2-utils -yKetik kata sandi yang kuat dan masukkan lagi untuk mengonfirmasi kata sandi Anda. Anda telah menambahkan pengguna otentikasi dasar untuk registri buruh pelabuhan.
Jalankan Registri Docker
Anda telah menyelesaikan penyiapan. Anda dapat membangun registri menggunakan perintah docker-compose.
Buka direktori, tempat kita membuat file docker-compose.yml
$ cd myregistrySekarang jalankan perintah berikut:
$ docker-compose up -dRegistri Docker sekarang aktif, Anda dapat memverifikasi container yang sedang berjalan menggunakan perintah berikut:
$ docker ps -aAnda akan mendapatkan output berikut:
Tarik Gambar dari Docker Hub ke registri Pribadi
Untuk menyimpan image dari hub Docker ke registri pribadi, gunakan perintah docker pull untuk menarik image docker dari hub docker. Dalam contoh ini, saya akan menarik gambar buruh pelabuhan dari centos.
$ docker tarik centosSetelah berhasil menarik gambar dari hub buruh pelabuhan, beri tag pada gambar untuk memberi label untuk registri pribadi.
Dalam contoh ini, saya akan menandai gambar centos sebagai:registry.linuxtechi.com/linuxtechi-centos
$ docker image tag [nama gambar] registry.linuxtechi.com/[new-image-name]
Contoh:
$ tag gambar buruh pelabuhan centos registry.linuxtechi.com/linuxtechi-centosUntuk memeriksa apakah gambar buruh pelabuhan tersedia secara lokal atau tidak, jalankan perintah berikut.
$ gambar buruh pelabuhanDocker image buruh pelabuhan ke registri pribadi
Anda telah menarik gambar buruh pelabuhan dari hub buruh pelabuhan dan membuat tag untuk registri pribadi. Sekarang Anda perlu mendorong image buruh pelabuhan lokal ke registri pribadi.
Pertama, Login ke registri pribadi Anda menggunakan perintah berikut:
$ login buruh pelabuhan https://registry.linuxtechi.com/v2/Gunakan url registri Anda sendiri sebagai ganti ‘https://registry.linuxtechi.com’
Anda akan dimintai nama pengguna dan kata sandi; Anda akan mendapatkan pesan login berhasil sebagai:
Sekarang Anda dapat mendorong gambar buruh pelabuhan Anda ke registri pribadi. Untuk mendorong gambar jalankan perintah berikut:
$ docker push registry.linuxtechi.com/linuxtechi-centosGanti nama gambar Anda setelah 'docker push'
Setelah push selesai, Anda dapat membuka browser dan memasukkan url:
https://registry.linuxtechi.com/v2/_catalog
Ganti registry.linuxtechi.com dengan url Anda sendiri dan berikan otentikasi dasar. Anda akan menemukan daftar repositori sebagai :
Menarik image buruh pelabuhan dari Private Registry
Anda telah mendorong image buruh pelabuhan lokal ke registri buruh pelabuhan pribadi Anda. Dengan cara yang sama Anda dapat menarik gambar buruh pelabuhan dari registri pribadi buruh pelabuhan ke server lokal.
Jalankan perintah berikut untuk login di server registri pribadi Anda.
$ login buruh pelabuhan https://registry.linuxtechi.comGanti registry.linuxtechi.com dengan url registri pribadi Anda dan berikan otentikasi dasar. Setelah login berhasil, jalankan perintah berikut untuk menarik gambar buruh pelabuhan dari registri pribadi. Dalam contoh ini, saya akan menarik gambar buruh pelabuhan yang sebelumnya didorong di server lokal. Anda dapat memiliki asumsi Anda sendiri untuk nama gambar buruh pelabuhan.
$ docker pull registry.linuxtechi.com/linuxtechi-centosAnda akan memiliki output yang mirip dengan:
Kesimpulan:
Dalam artikel Anda telah belajar tentang cara meng-host registri buruh pelabuhan pribadi Anda sendiri. Anda juga mendapat ide tentang cara menarik gambar dari hub buruh pelabuhan ke server lokal, menandai gambar dan memasukkannya ke registri pribadi. Anda juga telah mempelajari cara menarik gambar buruh pelabuhan dari registri pribadi di server lokal.
Baca Juga :Cara Menginstal KVM di Server Ubuntu 20.04 LTS (Focal Fossa)
Cara Menginstal AWX yang Mungkin di Ubuntu 20.04 LTS Cara Menginstal Ansible di Ubuntu 20.04 LTS / 21.04Ubuntu