Ana içeriğe atla
CentOS 7.4’teki docker dağıtım paketi, ekstra havuzda mevcuttur. CentOS 7 sisteminizde devre dışı bırakılmışsa etkinleştirmeniz gerekebilir.

Kurulum Adımları

1

Docker Distribution kurulumu

Docker Distribution paketini kurun:
sudo yum -y install docker-distribution
2

Docker Kayıt Defterini yapılandırma

Docker kayıt defteri yapılandırma dosyası /etc/docker-distribution/registry/config.yml adresinde bulunur. YAML biçimindedir. Herhangi bir değişiklik yapmanız gerekirse, burada yapın.Örnek yapılandırma dosyası:
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    layerinfo: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
Varsayılan yapılandırma dosyasından:
  • /var/lib/registry: Docker image’larının depolanacağı dizindir
  • Service: Tüm ağ arayüzlerinde 5000 numaralı bağlantı noktasına bağlanır
3

SELinux ve Güvenlik Duvarı yapılandırması

SELinux’u etkinleştirdiyseniz, 5000 numaralı bağlantı noktasını kullanırken bir sorunla karşılaşabilirsiniz. SELinux’u devre dışı bırakmayı veya sorunlarla karşılaşırsanız izin verici moda getirmeyi düşünün.
Güvenlik duvarı etkinse ve çalışıyorsa, güvenlik duvarında bağlantı noktasına izin verin:
firewall-cmd --add-port=5000/tcp
firewall-cmd --reload
4

Docker Kayıt Defterini başlatma

Hizmeti başlatın ve önyüklemede başlayacak şekilde ayarlayın:
systemctl start docker-distribution
systemctl enable docker-distribution
Docker dağıtım hizmetinin çalıştığını doğrulayın:
systemctl status docker-distribution
Örnek çıktı:
● docker-distribution.service - v2 Registry server for Docker
   Loaded: loaded (/usr/lib/systemd/system/docker-distribution.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2018-03-31 14:31:16 EDT; 2min 20s ago
 Main PID: 16262 (registry)
   CGroup: /system.slice/docker-distribution.service
           └─16262 /usr/bin/registry serve /etc/docker-distribution/registry/...

Kayıt Defteri’ni Docker Engine’e Ekleme

Aşağıdaki bilgi Apinizer kurulumunda Kubernetes 1.18.x ve Docker uygulamaları birlikte kurulduğu zaman kullanılacaktır.
Varsayılan olarak Docker, Docker kayıt defterine bağlanmak için HTTPS kullanır. Güvenilir bir ağ üzerindeyseniz, güvenli olmayan bir kayıt defterini kullanabilirsiniz. Bu, dahili kullanım için CA imzalı sertifika ihtiyacını veya tüm Docker düğümlerinde kendinden imzalı sertifikaya güvenmeyi ortadan kaldırır.
1

Docker daemon.json yapılandırması

/etc/docker/daemon.json dosyasını düzenleyin:
vi /etc/docker/daemon.json
Dosya içindeki tüm satırları silip aşağıdaki satırı ekleyin:
{
  "insecure-registries" : ["dockerregistry.local:5000"]
}
Yukarıdaki satırı /etc/docker/daemon.json Docker registry’e bağlanacak tüm sunucular üzerinde yapılması gerekmektedir.
"insecure-registries" : ["192.168.X.X:5000"] bu şekilde de eklenebilir.
2

Hostname yapılandırması

Bir DNS sunucunuz yoksa, ana bilgisayar adını IP adresiyle eşlemek için /etc/hosts dosyasını kullanın:
cat /etc/hosts
192.168.X.X dockerregistry.local
Hostname yazılıyorsa, Kubernetes cluster içindeki diğer makinelerinde host dosyalarında belirtilmesi gerekmektedir.
3

Docker'ı yeniden başlatma

Değişiklikleri uygulamak için Docker’ı yeniden başlatın:
systemctl restart docker

Docker Kayıt Defteri Kullanımı

Private Docker Registry’ye image’ları yüklemek ve yönetmek için aşağıdaki adımları izleyin.
1

Image'ı indirme

Docker registry kurulmuş olan ortama image’ları indirin:
sudo docker pull apinizercloud/manager:<APINIZER_VERSION>
2

Image'ı etiketleme

Image’ı dockerregistry.local:5000/manager: olarak etiketleyin. Bu, mevcut image için ek bir etiket oluşturur:
docker tag apinizercloud/manager:<APINIZER_VERSION> dockerregistry.local:5000/manager:<APINIZER_VERSION>
Etiketin ilk kısmı bir ana bilgisayar adı ve bağlantı noktası olduğunda, Docker bunu push sırasında bir kayıt defterinin konumu olarak yorumlar.
3

Image'ı registry'ye gönderme

Image’ı yerel kayıt defterine gönderin:
docker push dockerregistry.local:5000/manager:<APINIZER_VERSION>
Image yükleme başarılı olduysa, sonunda sha256 hash almalısınız. Aktarılan image’lar /var/lib/registry/docker/registry/v2/repositories dizini altında saklanır.
4

Repository kontrolü

Aktarılan image’ları kontrol edin:
ls /var/lib/registry/docker/registry/v2/repositories

Örnek Kullanımlar

Manager, Worker ve Cache Image’larını Yükleme

Local registry’ye pull edilen image’ları push etmek için:
# Apinizer Image'ı yükleme
--- Manager ---
sudo docker pull apinizercloud/manager:<APINIZER_VERSION>
sudo docker tag apinizercloud/manager:<APINIZER_VERSION> <YOUR_IP>:5000/manager:<APINIZER_VERSION>
sudo docker push <YOUR_IP>:5000/manager:<APINIZER_VERSION>

--- Worker ---
sudo docker pull apinizercloud/worker:<APINIZER_VERSION>
sudo docker tag apinizercloud/worker:<APINIZER_VERSION> <YOUR_IP>:5000/worker:<APINIZER_VERSION>
sudo docker push <YOUR_IP>:5000/worker:<APINIZER_VERSION>

--- Cache ---
sudo docker pull apinizercloud/cache:<APINIZER_VERSION>
sudo docker tag apinizercloud/cache:<APINIZER_VERSION> <YOUR_IP>:5000/cache:<APINIZER_VERSION>
sudo docker push <YOUR_IP>:5000/cache:<APINIZER_VERSION>

.tar Dosyasından Image Yükleme

.tar olarak alınmış bir Apinizer image’ının registry’ye yüklenmesi:
# Apinizer Image'ı yükleme
docker image load < apinizer-manager.tar
docker tag apinizer-manager:latest <YOUR_IP>:5000/apinizer-manager:latest
docker push <YOUR_IP>:5000/apinizer-manager:latest

Linux Shell Script ile Image’leri Local Docker Registry’e Ekleme

Otomatik Image Yükleme Scripti

Apinizer image’larını otomatik olarak local Docker registry’ye yüklemek için aşağıdaki script’i kullanabilirsiniz:
vi pullApinizerImages.sh
Script içeriği:
#!/bin/bash

localRepositoryUrl=<YOUR_IP>:5000

if [ "$localRepositoryUrl" == "$localRepositoryUrl" ]; then
  echo "Please enter your local Docker Repository URL"
else
  echo "Your Local Repository Url : "$localRepositoryUrl
fi

if [ $# -eq 0 ]; then
  echo "Please enter the version information as a parameter."
  exit
fi

echo 'Version = ' $1
version=$1

docker pull apinizercloud/manager:"$version"
docker tag apinizercloud/manager:$version $localRepositoryUrl/manager:$version
docker push $localRepositoryUrl/manager:$version

docker pull apinizercloud/worker:$version
docker tag apinizercloud/worker:$version $localRepositoryUrl/worker:$version
docker push $localRepositoryUrl/worker:$version

docker pull apinizercloud/cache:$version
docker tag apinizercloud/cache:$version $localRepositoryUrl/cache:$version
docker push $localRepositoryUrl/cache:$version

echo "Image pull operation completed."
Kullanımı:
sh pullApinizerImages.sh <APINIZER_VERSION>

Registry API Kullanımı

Catalog Bilgisi Sorgulama

Registry’deki tüm repository’leri listelemek için:
curl http://<YOUR_IP>:5000/v2/_catalog
Örnek çıktı:
{
  "repositories": [
    "cache",
    "manager",
    "worker"
  ]
}

Image Tag’lerini Listeleme

Belirli bir image’ın tag’lerini listelemek için:
curl http://<YOUR_IP>:5000/v2/manager/tags/list
Örnek çıktı:
{
  "name": "manager",
  "tags": [
    "<APINIZER_VERSION>"
  ]
}

Kubernetes Deployment Yapılandırması

Kubernetes’te Apinizer deploy dosyalarında private registry kullanmak için:
image: myregistry.local:5000/apinizercloud/manager:<APINIZER_VERSION>

Repository Temizleme

Repository’deki image’ları silmek için:
cd /var/lib/registry/docker/registry/v2/repositories
sudo rm -rf *
Local Docker Registry kurarken dikkat edilmesi gereken bir diğer konu SSL’dir.Daha fazla bilgi için: https://github.com/Juniper/contrail-docker/wiki/Configure-docker-service-to-use-insecure-registry

Kullanılmayan Image’ları Temizleme

Kullanılmayan image’ları temizlemek için:
docker image prune -a