GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengatur dan Menggunakan Registri Docker Pribadi

Pendahuluan

Jika Anda ingin memastikan pengembangan CI/CD yang lancar menggunakan platform Docker, pertimbangkan untuk menyiapkan registri Docker pribadi. Tidak hanya mempercepat pengiriman, tetapi juga merupakan cara praktis untuk mendistribusikan sumber daya dan berbagi gambar Docker di antara container.

Dalam tutorial ini, pelajari cara menyiapkan registri Docker pribadi dan mengonfigurasinya untuk aksesibilitas eksternal.

Prasyarat

  • Akses ke akun pengguna dengan sudo atau akar hak istimewa
  • Server klien
  • Server untuk Docker Registry pribadi
  • Pekerja Buruh dan Docker–Tulis di kedua server
  • Nginx di server Docker Registry pribadi

Apa itu Registri Docker Pribadi

Registry Docker adalah aplikasi sisi server dan bagian dari produk platform-as-a-service Docker. Ini memungkinkan Anda untuk menyimpan semua gambar Docker secara lokal ke dalam satu lokasi terpusat.

Saat Anda menyiapkan registri pribadi, Anda menetapkan server untuk berkomunikasi dengan Docker Hub melalui internet. Peran server adalah untuk menarik dan mendorong gambar, menyimpannya secara lokal, dan membagikannya di antara host Docker lainnya.

Dengan menjalankan registri yang dapat diakses secara eksternal, Anda dapat menghemat sumber daya yang berharga dan mempercepat proses. Perangkat lunak ini memungkinkan Anda mengambil gambar tanpa harus terhubung ke Docker Hub, menghemat bandwidth, dan mengamankan sistem dari potensi ancaman online.

Host Docker dapat mengakses repositori lokal melalui koneksi yang aman dan menyalin image dari registri lokal untuk membuat container mereka sendiri.

Sebelum Anda Mulai

Seperti yang tercantum di bagian prasyarat, panduan ini mengasumsikan Anda sudah menginstal Docker dan Docker-Compose di semua server.

Untuk memverifikasi bahwa Anda memiliki perangkat lunak yang diperlukan, Anda dapat memeriksa versi rilisnya dengan perintah:

docker version
docker-compose version

Hal lain yang ingin Anda pastikan adalah bahwa layanan Docker telah dimulai dan diatur untuk diaktifkan saat boot:

sudo systemctl start docker
sudo systemctl enable docker

Instal dan Konfigurasikan Registri Docker Pribadi

Langkah 1:Buat Direktori Registri

Mulai mengkonfigurasi server yang akan menjadi tuan rumah registri pribadi. Pertama-tama Anda ingin membuat direktori baru yang akan menyimpan semua file konfigurasi yang diperlukan.

1. Perintah berikut membuat direktori proyek baru berlabel registry dan dua sub-direktori - nginx dan auth :

mkdir -p registry/{nginx, auth}

2. Pindah ke registry dan buat dua direktori baru di dalam nginx :

cd registry/
mkdir -p nginx/{conf.d/,ssl}

3. Lihat hierarki direktori yang baru dibuat dengan mengetik:

tree

Langkah 2:Buat Skrip Tulis-Docker dan Tetapkan Layanan

Selanjutnya, Anda perlu membuat dan mengonfigurasi docker-compose.yml baru naskah. Script mendefinisikan versi Docker-Compose, serta layanan yang Anda perlukan untuk menyiapkan registri pribadi.

1. Buat file baru, saat berada di registry direktori, dengan editor teks pilihan Anda:

nano docker-compose.yml

2. Ada beberapa hal yang perlu Anda definisikan dalam file konfigurasi ini, jadi ikuti dengan cermat dan hati-hati tambahkan setiap bagian konten:

version: '3'
services:
#Registry
  registry:
    image: registry:2
    restart: always
    ports:
    - "5000:5000"
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry-Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.passwd
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - registrydata:/data
      - ./auth:/auth
    networks:
      - mynet
#Nginx Service
  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: unless-stopped
    tty: true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d/:/etc/nginx/conf.d/
      - ./nginx/ssl/:/etc/nginx/ssl/
    networks:
      - mynet
#Docker Networks
networks:
  mynet:
    driver: bridge
#Volumes
volumes:
  registrydata:
    driver: local

3. Simpan dan tutup file.

Konfigurasi dijelaskan:

Pertama, Anda menentukan versi Docker-Compose yang ingin Anda gunakan. Dalam contoh ini, ini adalah version: '3' . Kemudian Anda melanjutkan untuk mendefinisikan semua komponen registri Docker, dimulai dengan #Registry layanan.

Docker Registry pada dasarnya adalah wadah yang menjalankan image registry, itulah sebabnya image didefinisikan sebagai registry:2 .

Menambahkan restart: always line memastikan Anda memulai Docker Registry sebagai layanan segera setelah Anda mem-boot sistem.

Menentukan port 5000:5000 menginstruksikan Docker bahwa host dan container yang sedang berjalan berkomunikasi melalui nomor port yang ditentukan.

Layanan akan memasang volume buruh pelabuhan registrydata dan direktori lokal auth , beserta file autentikasinya registry.passwd .

Elemen selanjutnya adalah #Nginx Service . Konfigurasi menguraikan layanan berjalan pada port 80:80 (HTTPS) dan 443:443 (HTTP). Ini akan me-mount direktori lokal untuk konfigurasi virtual (conf.d ) dan sertifikat SSL (ssl ).

Terakhir, setel mynet dengan driver jembatan dan registrydata dengan driver lokal sebagai parameter untuk jaringan kustom.

Langkah 3:Siapkan Penerusan Port Nginx

Langkah selanjutnya adalah mengonfigurasi virtual host Nginx dan mengonfigurasinya untuk layanan Nginx.

1. Pindah ke nginx/conf.d/ direktori yang Anda buat pada langkah sebelumnya:

cd nginx/conf.d/

2. Buat file host virtual baru bernama registry.conf :

nano registry.conf

3. Tambahkan konten berikut:

upstream docker-registry {
    server registry:5000;
}

server {
    listen 80;
    server_name registry.example-server.com;
    return 301 https://registry.example-server.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name registry.example-server.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # Log files for Debug
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    location / {
        # Do not allow connections from docker 1.5 and earlier
        # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
        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;
    }

}

4. Simpan file dan kembali ke shell terminal.

Langkah 4:Tingkatkan Ukuran Unggahan File Nginx

Secara default, Nginx membatasi ukuran unggahan file hingga 1MB . Karena banyak gambar Docker melebihi jumlah ini, praktik terbaiknya adalah meningkatkan ukuran file maksimum di Nginx. Pastikan Anda dapat mengunggah gambar dengan ukuran file yang lebih besar dengan menyetel max_body_size menjadi 2GB .

1. Buat file konfigurasi tambahan dengan:

nano additional.conf

2. Tambahkan baris berikut ke dalam file:

client_max_body_size 2G;

3. Simpan dan tutup file.

Langkah 5:Konfigurasi Sertifikat SSL dan Otentikasi Dasar

1. File sertifikat SSL domain Anda harus disalin ke ssl direktori. Untuk melakukannya, jalankan perintah:

cp /path/to/ssl/fullchain.pem ssl/
cp /path/to/ssl/privkey.pem ssl/

2. Kemudian, pindah ke auth direktori:

cd auth

3. Dan minta file kata sandi baru bernama registry.passwd untuk pengguna Anda:

htpasswd -Bc registry.passwd example

4. Ketikkan kata sandi yang kuat dan ketik ulang untuk mengonfirmasi. Dengan ini, Anda telah menambahkan kata sandi untuk pengguna Anda.

Langkah 6:Tambahkan Sertifikat CA Root

Sekarang Anda perlu menambahkan sertifikat Root CA ke Docker dan sistem yang sedang Anda kerjakan.

1. Ekspor .crt file dengan OpenSSL dengan mengetik:

openssl x509 -in rootCA.pem -inform PEM -out rootCA.crt

2. Salin sertifikat Root ke direktori baru untuk sertifikat Docker:

mkdir -p /etc/docker/certs.d/registry.example-server.com/
cp rootCA.crt /etc/docker/certs.d/example-server.com/

3. Selanjutnya, salin sertifikat yang sama ke direktori baru lainnya dengan nama /usr/share/ca-certificate/extra :

mkdir -p .usr.share.ca-certificates/extra/
cp rootCA.crt /usr/share/ca-certificates/extra/

4. Konfigurasi ulang ca-certificate . yang baru dibuat paket dengan mengetik:

dpkg-reconfigure ca-certificates

5. Terakhir, restart layanan Docker:

systemctl restart docker

Langkah 7:Jalankan Registri Docker

Dengan semua yang telah disiapkan dan siap, Anda dapat membuat container Docker Registry menggunakan Docker-Compose:

docker-compose up -d

Periksa apakah Registry dan layanan Nginx berjalan:

docker-compose ps
netstat -plntu

Outputnya akan menunjukkan kepada Anda layanan dan port yang ditetapkan untuknya.

Tarik Gambar dari Docker Hub ke Registri Pribadi

1. Untuk menyimpan gambar secara lokal dari Docker Hub ke registri pribadi Anda, gunakan docker pull perintah:

docker pull [docker_image]

2. Tambahkan tag ke gambar untuk memberi label pada registri pribadi:

docker image tag [docker_image] registry.example-server.com/[new_image_name]

3. Anda dapat memeriksa apakah image Docker tersedia secara lokal dengan meminta sistem untuk membuat daftar semua image yang disimpan secara lokal:

docker images

Cara Mendorong Gambar Docker ke Registri Pribadi

1. Untuk mendorong gambar dari host Docker ke server registri Docker pribadi, Anda harus terlebih dahulu masuk ke registri dengan perintah:

docker login https://registry.example-server.com/v2/

2. Ketik nama pengguna dan sandi yang Anda tetapkan untuk virtual host.

3. Sekarang Anda dapat mendorong gambar Anda ke registri pribadi dengan perintah:

docker push registry.example-server.com/[new_image_name]

4. Lihat daftar gambar yang disimpan di registri Docker pribadi:

http -a example https://registry.example-server.com/v2/_catalog

Ubuntu
  1. Cara Mengatur Memori Docker dan Batas Penggunaan CPU

  2. Cara Mengatur Registri Docker Pribadi di Rocky Linux 8

  3. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  1. Volume Docker NFS:Cara Membuat dan Menggunakan

  2. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  3. Cara Menginstal dan Menggunakan Docker di Ubuntu 18.04

  1. Cara Menginstal dan Menggunakan Docker Compose di Ubuntu 18.04

  2. Cara Menginstal dan Menggunakan Docker di CentOS 7

  3. Cara Menginstal dan Menggunakan Docker Compose di CentOS 7