Membangun Private Docker Registry di Ubuntu 24.04
Pipeline image sering macet saat server produksi harus menarik image dari registry publik. Private registry memberi Anda kontrol penuh atas image internal, akses, dan lokasi penyimpanan di server sendiri.
Panduan ini menyiapkan private Docker registry di Ubuntu 24.04 pada Nusa Cloud VPS, lalu memverifikasi push dan pull dari host lain.
Prasyarat Private Docker Registry di Ubuntu 24.04โ
- Server Ubuntu 24.04 LTS.
- Docker Engine dari repo resmi Docker.
- Nginx untuk reverse proxy.
- Domain atau subdomain yang mengarah ke VPS.
- Sertifikat TLS yang valid.
Cek Docker sudah aktif:
sudo systemctl status docker
Contoh output:
โ docker.service - Docker Application Container Engine
Active: active (running)
Install Docker Engine di Ubuntu 24.04โ
Docker resmi mendukung Ubuntu 24.04 LTS. Instal dari repo resmi, bukan paket docker.io bawaan distro.
Langkah umum yang perlu Anda lakukan:
- Hapus paket konflik seperti
docker.io,docker-compose, danpodman-dockerjika ada. - Tambahkan key GPG resmi Docker.
- Tambahkan repo
aptresmi Docker. - Instal
docker-ce,docker-ce-cli,containerd.io,docker-buildx-plugin, dandocker-compose-plugin.
Verifikasi versi Docker:
docker --version
Contoh output:
Docker version 27.x.x, build xxxxxxx
Jalankan Container Registryโ
Gunakan image registry resmi dan bind ke port lokal agar Nginx menjadi satu-satunya endpoint publik.
docker run -d \
--name registry \
--restart unless-stopped \
-p 127.0.0.1:5000:5000 \
-v /opt/registry/data:/var/lib/registry \
registry:2
Perintah ini menyimpan image di /opt/registry/data dan hanya membuka layanan pada localhost.
Verifikasi container aktif:
docker ps
Contoh output:
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
abc123 registry:2 "/entrypoint.sh /etcโฆ" Up 10 seconds 127.0.0.1:5000->5000/tcp registry
Konfigurasi Nginx untuk Registry Dockerโ
Buat virtual host yang meneruskan trafik HTTPS ke registry lokal.
Contoh server block:
server {
listen 443 ssl http2;
server_name registry.example.com;
ssl_certificate /etc/letsencrypt/live/registry.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/registry.example.com/privkey.pem;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $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;
}
}
Uji konfigurasi dan reload Nginx:
sudo nginx -t
sudo systemctl reload nginx
Verifikasi Push dan Pull Docker Imageโ
Login ke registry dari host client:
docker login registry.example.com
Tag image lokal:
docker tag nginx:latest registry.example.com/test/nginx:latest
Push image:
docker push registry.example.com/test/nginx:latest
Pull image dari host lain:
docker pull registry.example.com/test/nginx:latest
Jika pull berhasil, registry dan TLS sudah berfungsi.
Troubleshooting Private Docker Registryโ
Jika push gagal, cek hal berikut:
- Port 443 terbuka pada firewall.
- Nginx mengarah ke
127.0.0.1:5000. - Sertifikat TLS valid untuk nama host registry.
- Container registry masih berjalan.
Jika registry menolak ukuran upload besar, pastikan client_max_body_size 0; aktif pada server block Nginx.
Butuh Bantuan?โ
Jika Anda menerapkan registry ini di Nusa Cloud VPS, simpan konfigurasi Nginx dan status container sebelum eskalasi. Untuk tiket dukungan, gunakan Client Area.
