Docker Registry atau 'Registry' adalah aplikasi sisi server open source dan sangat skalabel yang dapat digunakan untuk menyimpan dan mendistribusikan image Docker. Itu adalah aplikasi sisi server di belakang Docker Hub. Dalam kebanyakan kasus penggunaan, Docker Registry adalah solusi yang bagus jika Anda ingin mengimplementasikan sistem CI/CD pada pengembangan aplikasi Anda. Registri Docker Pribadi memberikan lebih banyak kinerja untuk siklus pengembangan dan produksi dengan memusatkan semua gambar aplikasi Docker kustom Anda di satu tempat.
Dalam tutorial ini, kami akan menunjukkan cara menginstal dan mengonfigurasi Private Docker Registry di server Ubuntu 18.04. Kami akan menggunakan server web Nginx dan melindungi Registry dengan nama pengguna dan sandi (auth dasar).
Prasyarat
- Server Ubuntu 18.04
- Hak istimewa root
Apa yang akan kita lakukan?
- Instal Dependensi
- Instal Docker dan komposisi Docker
- Siapkan Registri Docker Pribadi
- Pengujian
Langkah 1 - Instal Ketergantungan Paket
Pertama-tama, kita akan menginstal beberapa dependensi paket untuk menerapkan Registri Docker Pribadi.
Instal dependensi paket menggunakan perintah berikut.
sudo apt install -y gnupg2 lulus Apache2-utils httpie
Paket gnupg2 dan pass akan digunakan untuk menyimpan otentikasi kata sandi ke registri buruh pelabuhan. Dan apache2-utils akan digunakan untuk menghasilkan otentikasi dasar, dan httpie akan digunakan untuk pengujian.
Langkah 2 - Instal Docker dan Docker-compose
Sekarang kita akan menginstal docker dan docker-compose dari repositori resmi Ubuntu.
Instal Docker dan Docker-compose dengan menjalankan perintah berikut.
sudo apt install -y docker.io docker-compose -y
Setelah instalasi selesai, mulai layanan buruh pelabuhan dan tambahkan ke waktu boot.
sudo systemctl start docker
sudo systemctl enable docker
Docker aktif dan berjalan, dan komposisi Docker telah diinstal. Periksa menggunakan perintah di bawah ini.
versi buruh pelabuhan
versi penulisan buruh pelabuhan
Dan Anda akan ditampilkan versi Docker dan Docker-compose yang terinstal di sistem Anda.
Langkah 3 - Siapkan Registri Docker Pribadi
Pada langkah ini, kita akan mengonfigurasi lingkungan Docker Registry dengan membuat beberapa lingkungan direktori, dan membuat beberapa konfigurasi termasuk docker-compose.yml, virtual host nginx dan konfigurasi tambahan dll.
- Buat Direktori Proyek
Buat direktori baru untuk proyek yang disebut 'registry' dan buat direktori 'nginx' dan 'auth' di dalamnya.
mkdir -p registry/{nginx,auth}
Setelah itu, masuk ke direktori 'registry' dan buat direktori baru lagi di dalam 'nginx'.
cd registry/
mkdir -p nginx/{conf.d/,ssl}
Dan sebagai hasilnya, direktori proyek terlihat seperti gambar berikut.
pohon
- Buat Skrip Penulisan Docker
Sekarang kita ingin membuat skrip docker-compose.yml baru untuk menerapkan Registry Docker.
Buka direktori 'registry' dan buat file konfigurasi baru 'docker-compose.yml'.
cd registry/
vim docker-compose.yml
Pertama, tentukan versi penulisan yang ingin Anda gunakan dan layanannya.
versi:'3'
layanan:
Setelah itu, tambahkan layanan pertama bernama 'registry'. Layanan Docker Registry akan menggunakan image docker yang disediakan oleh tim docker 'registry:2. Ini akan me-mount volume buruh pelabuhan 'registrydata' dan direktori lokal bernama 'auth' yang berisi file otentikasi dasar 'registry.passwd'. Dan yang terakhir, itu akan berjalan pada gambar buruh pelabuhan khusus bernama 'mynet' dan mengekspos port 5000 pada wadah dan host.
#Registry registry:image:registry:2 restart:selalu port:- "5000:5000" lingkungan:REGISTRY_AUTH:htpasswd REGISTRY_AUTH_HTPASSWD_REALM:Registry-Realm REGISTRY_AUTH_HTPASSWD_PATH:/auth/registry.passwd REGISTRY_STORY /dataFILESYECSTEM_ROOTFILESY_STORY /data - ./auth:/auth networks:- mynet
Selanjutnya, konfigurasi layanan 'nginx' yang akan menjalankan port HTTP dan HTTPS dan mount direktori lokal 'conf.d' untuk konfigurasi virtual host, dan 'ssl' untuk sertifikat ssl.
#Nginx Service nginx:image:nginx:alpine container_name:nginx restart:tty kecuali dihentikan:true port:- "80:80" - "443:443" volume:- ./nginx/conf.d/:/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ jaringan:- mynet
Dan yang terakhir, tentukan jaringan kustom 'mynet' dengan driver bridge dan 'registrydata' dengan driver lokal.
#Jaringan Docker Jaringan:mynet:driver:bridge#Volumesvolumes:registrydata:driver:local
Simpan dan tutup konfigurasi.
Berikut konfigurasi lengkapnya:
versi:'3'services:#Registry registry:image:registry:2 restart:selalu port:- "5000:5000" lingkungan:REGISTRY_AUTH:htpasswd REGISTRY_AUTH_HTPASSWD_REALM:Registry-Realm REGISTRY_AUTH_HTPASSWD_PATH:/authDIRECTORAGE_GISTRY. /volume data:- registrydata:/data - ./auth:/auth networks:- mynet#Nginx Service nginx:image:nginx:alpine container_name:nginx restart:kecuali dihentikan tty:true ports:- "80:80" - Volume "443:443":- ./nginx/conf.d/:/etc/nginx/conf.d/ - ./nginx/ssl/:/etc/nginx/ssl/ jaringan:- mynet#Docker Networksnetworks:mynet :driver:bridge#Volumesvolumes:registrydata:driver:local
- Konfigurasikan Nginx Virtual Host
Setelah membuat skrip docker-compose, kita akan membuat virtual host dan konfigurasi tambahan untuk layanan nginx.
Buka direktori 'nginx/conf.d/' dan buat file host virtual baru bernama 'registry.conf'.
cd nginx/conf.d/
vim registry.conf
Tempelkan konfigurasi berikut.
upstream docker-registry { server registry:5000;}server { listen 80; server_name registry.hakase-labs.io; return 301 https://registry.hakase-labs.io$request_uri;}server { dengarkan 443 ssl http2; server_name registry.hakase-labs.io; ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; # File log untuk Debug error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; lokasi / { # Jangan izinkan koneksi dari buruh pelabuhan 1.5 dan sebelumnya # buruh pelabuhan pra-1.6.0 tidak mengatur agen pengguna dengan benar pada ping, tangkap agen pengguna "Go *" 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-Diteruskan-Untuk $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $skema; proxy_read_timeout 900; }}
Simpan dan tutup.
Selanjutnya, buat konfigurasi tambahan untuk meningkatkan max_body_size di nginx. Ini akan memungkinkan Anda untuk mengunggah gambar buruh pelabuhan dengan ukuran maksimal 2GB.
vim tambahan.conf
Tempelkan konfigurasi di bawah.
client_max_body_size 2G;
Simpan dan tutup.
- Konfigurasikan Sertifikat SSL dan Otentikasi Dasar
Salin file sertifikat SSL domain Anda ke direktori 'ssl'.
cp /path/to/ssl/fullchain.pem ssl/
cp /path/to/ssl/privkey.pem ssl/
Sekarang buka direktori 'auth' dan buat file kata sandi baru 'registry.passwd'.
cd auth/
Buat kata sandi baru untuk hakase pengguna.
htpasswd -Bc registry.passwd hakase
KETIKA SANDI KUAT
Dan pengaturan lingkungan untuk menyebarkan Private Docker Registry telah selesai.
Di bawah ini adalah tangkapan layar dari file dan direktori lingkungan kami.
pohon
- Jalankan Registri Docker
Jalankan Docker Registry menggunakan perintah docker-compose di bawah ini.
docker-compose up -d
Dan Anda akan mendapatkan hasil seperti di bawah ini.
Setelah itu, pastikan registry dan layanan nginx sudah aktif dan berjalan. Periksa menggunakan perintah berikut.
docker-compose ps
netstat -plntu
Dan Anda akan diperlihatkan layanan 'registry' berjalan pada port '5000', dan layanan 'nginx' akan menampilkan port HTTP dan HTTPS seperti di bawah ini.
Langkah 4 - Pengujian
Sebelum menguji Private Docker Registry, kita perlu menambahkan sertifikat Root CA ke docker itu sendiri dan ke sistem.
Jika Anda menggunakan sertifikat file pem, ekspor ke file .crt menggunakan perintah OpenSSL.
openssl x509 -in rootCA.pem -inform PEM -out rootCA.crt
Sekarang buat direktori baru untuk sertifikat buruh pelabuhan dan salin sertifikat CA Root ke dalamnya.
mkdir -p /etc/docker/certs.d/registry.hakase-labs.io/
cp rootCA.crt /etc/docker/certs.d/registry.hakase-labs.io/Kemudian buat direktori baru '/usr/share/ca-certificate/extra' dan salin sertifikat Root CA ke dalamnya.
mkdir -p /usr/share/ca-certificates/extra/
cp rootCA.crt /usr/share/ca-certificates/extra/Setelah itu, konfigurasi ulang paket 'ca-certificate' dan mulai ulang layanan Docker.
dpkg-reconfigure ca-certificates
systemctl restart docker
- Unduh Gambar Docker
Unduh gambar Docker baru menggunakan perintah berikut.
docker tarik ubuntu:16.04Jika sudah selesai, beri tag image untuk private registry dengan perintah di bawah ini.
tag gambar buruh pelabuhan ubuntu:16.04 registry.hakase-labs.io/ubuntu16Periksa kembali daftar gambar Docker pada sistem dan Anda akan mendapatkan gambar baru seperti di bawah ini.
gambar buruh pelabuhan
- Dorong Gambar ke Registri Lokal Pribadi
Masuk ke Registri Docker Pribadi menggunakan perintah berikut.
login buruh pelabuhan https://registry.hakase-labs.io/v2/Ketik nama pengguna dan sandi berdasarkan file 'registry.htpasswd'.
Sekarang periksa ketersediaan gambar buruh pelabuhan di Registry.
http -a hakase https://registry.hakase-labs.io/v2/_catalogDan tidak ada gambar buruh pelabuhan di Registry.
Sekarang dorong image kustom kita ke Private Docker Registry.
docker push registry.hakase-labs.io/ubuntu16Periksa lagi dan pastikan Anda mendapatkan gambar buruh pelabuhan 'ubuntu16' di Repositori Pribadi.
http -a hakase https://registry.hakase-labs.io/v2/_catalog
Dan akhirnya, instalasi dan konfigurasi Private Docker Registry dengan Nginx dan Basic Authentication telah berhasil diselesaikan.
Cara Mengelola Paket dengan APT di Ubuntu 18.04 LTS Cara Menginstal Monica Personal Relationship Manager di Ubuntu 18.04 LTSUbuntu