Skip to main content
๐Ÿš€ nusa.id cloud server linux indonesialihat paket

Membangun Private Docker Registry di Ubuntu 24.04

ยท 3 min read

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โ€‹

  1. Server Ubuntu 24.04 LTS.
  2. Docker Engine dari repo resmi Docker.
  3. Nginx untuk reverse proxy.
  4. Domain atau subdomain yang mengarah ke VPS.
  5. 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:

  1. Hapus paket konflik seperti docker.io, docker-compose, dan podman-docker jika ada.
  2. Tambahkan key GPG resmi Docker.
  3. Tambahkan repo apt resmi Docker.
  4. Instal docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, dan docker-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.