GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur Registri Docker Pribadi di Ubuntu 18.04 LTS

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?

  1. Instal Dependensi
  2. Instal Docker dan komposisi Docker
  3. Siapkan Registri Docker Pribadi
  4. 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.04

Jika sudah selesai, beri tag image untuk private registry dengan perintah di bawah ini.

tag gambar buruh pelabuhan ubuntu:16.04 registry.hakase-labs.io/ubuntu16

Periksa 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/_catalog

Dan tidak ada gambar buruh pelabuhan di Registry.

Sekarang dorong image kustom kita ke Private Docker Registry.

docker push registry.hakase-labs.io/ubuntu16

Periksa 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.


Ubuntu
  1. Cara Mengatur Registri Docker Pribadi di Rocky Linux 8

  2. Cara Mengatur Server Rsyslog di Ubuntu 18.04 LTS

  3. Cara Mengatur Elasticsearch di Ubuntu 18.04 &16.04 LTS

  1. Cara Menginstal Docker di Ubuntu 22.04 / 20.04 LTS

  2. Cara Mengatur Registri Docker Pribadi di Kubernetes (k8s)

  3. Cara Mengatur Registri Docker Pribadi di Ubuntu 20.04

  1. Cara Mengatur Solusi Pemantauan Jaringan OpenNMS di Ubuntu 20.04 LTS

  2. Cara Setup Docker Private Registry di CentOS 7 / Ubuntu 16.04 / Fedora 26/25

  3. Cara Menginstal Zabbix 2.2 di Ubuntu 14.04 LTS