Varsayılan docker kayıt defterini docker.io'dan özel kayıt defterime nasıl değiştirebilirim?


124

Varsayılan olarak, komut verirsem:

sudo docker pull ruby:2.2.1

docker.io resmi sitesinden varsayılan olarak çekecektir.

Pulling repository docker.io/library/ruby

Özel kayıt defterime nasıl değiştirebilirim? Bu, eğer çıkarırsam

sudo docker pull ruby:2.2.1

kendi özel kayıt defterimden çekecek, çıktı şöyle bir şey:

Pulling repository my_private.registry:port/library/ruby

Çalışması için bir yol bulabildiniz mi? Ben de tam olarak aynı şeyi arıyordum. Nexus'u docker özel kayıt defterim olarak kullanıyorum. Docker pull komutumda alan adımı ve port numaramı kullanmak istemiyorum.
Dinesh

Yanıtlar:


56

GÜNCELLEME: Yorumunuzun ardından, varsayılan kayıt defterini değiştirmek şu anda mümkün değildir, daha fazla bilgi için bu konuya bakın .

Bunu, ana bilgisayarı ve bağlantı noktasını kendi başınıza değiştirerek yapabilmelisiniz:

docker pull localhost:5000/registry-demo

Sunucu uzaktaysa / yetkilendirilmişse, sunucuda şu şekilde oturum açmanız gerekebilir:

docker login https://<YOUR-DOMAIN>:8080

Sonra koşuyor:

docker pull <YOUR-DOMAIN>:8080/test-image

14
docker pull <YOUR-DOMAIN>:8080/test-imagetamamdı. Ama istediğim şey docker pull test-image, DOMAIN ve Port'u belirtmeden ve oturum açmadan.
mainframer

2
Cevabımı yorumunuza göre güncelledim. Şu anda varsayılan bir kayıt ayarlamak mümkün değil
Guy

Çoğu görüntünün dayandığı varsayılan ad alanını bozduğu için farklı bir varsayılan kayıt defteri ayarlamak da pek mümkün değildir
Matta

@scopesVar olanla çelişmeden yeni ad alanlarını tanıtmak için npm gibi bir şey yapabilirler . Görüntü adında kayıt defteri ana bilgisayar adının bulunması, bir şirket veya proje içinde kayıt defterini önbelleğe almayı / proxy'yi / kilitlemeyi zorlaştırır. Bu bunu iyi açıklıyor
Alexander Klimetschek

Bu PR, bu konuyla ilgili en son tartışma gibi görünüyor: github.com/moby/moby/pull/34319
Alexander Klimetschek

21

Bunun mümkün olduğu ortaya çıktı , ancak orijinal Docker CE veya EE sürümünü kullanmıyoruz.

Red Hat'ın docker fork'unu '--add-kayıt defteri' bayrağıyla kullanabilir veya kendi sabit kodlu varsayılan kayıt defteri ad alanınızı / dizininizi kullanmak için değiştirilmiş olan Registry / config.go ile kaynaktan kendiniz oluşturabilirsiniz.


3
RedHat çatalı, centos-ekstralarda bulunan çataldır. Docker.io sürümüne geçtikten sonra neden --add-registryçalışmayı durdurduğunu anlamama yardımcı olduğunuz için teşekkürler .
2017

2
--block-registry index.docker.ioVarsayılan kayıt defterinden kurtulma seçeneğini de kullanabilirsiniz .
Evan

1
--add-registry Çekme isteği oldu birleştirilmez . Bu özellik sonuçta reddedildi ( # 11816 ).
Franklin Piat

9

fedora dağıtımını kullanıyorsanız, dosyayı değiştirebilirsiniz

/etc/containers/registries.conf

Docker.io etki alanı ekleme


Bu redhat'e özgü yapılandırma dosyası dockerd ile başlamak için kullanılır --add-registry. Özelliği de Docker tarafından kabul edilmeyecektir çekme isteği oldu birleştirilmez . (ayrıca özellik nihayetinde reddedildi ( # 11816 ).
Franklin Piat

6

Topluluk içinde yaratacağı parçalanma nedeniyle desteklenmeyecek gibi görünüyor (yani, iki kullanıcı farklı görüntü çekiyor ubuntu:latest). Görüntü adının önüne ana bilgisayarı eklemeniz yeterlidir. Tartışmaya katılmak için bu github sorununa bakın .

(Not, bu bir görüşlü yorum olarak tasarlanmamıştır, sadece bahsedilen github konusunda izlenebilecek tartışmanın çok kısa bir özeti.)


10
parçalanma evet, ancak linux'un ilk günlerinde sonunda sadece üç (kaynak tabanı [arch, gentoo, slax, ...], debian tabanlı [debian / ubuntu] ve redhat tabanlı [kurumsal linux, rhel, centos] oldu. Varsayılan yukarı akış kaydını kendi kendine yönetilen bir şeyle değiştirebilmek, güvenlik açısından daha iyi olurdu.
Dwight Spencer

2
"Yalnızca üç linux, redhat, debian ve kaynak var" demek, "yalnızca üç arama sağlayıcısı var: google, bing ve diğer tüm arama sağlayıcıları" demek gibidir ...
Chris Browne

4

/Etc/docker/daemon.json içine aşağıdaki seçenekleri eklemeye çalıştım. (CentOS7 kullandım)

"add-registry": ["192.168.100.100:5001"],
"block-registry": ["docker.io"],

bundan sonra docker daemon'u yeniden başlattı. Docker.io olmadan da çalışıyor. Umarım bu birisi yardımcı olur.


Bu konfigürasyon RedHat'a özeldir. --add-registry Çekme isteği oldu birleştirilmez .
Franklin Piat

2

Docker resmi konumu 11815 numaralı sayımda açıklanmıştır :

Sorun 11815: Çekme komutunda kullanılan varsayılan kayıtların belirtilmesine izin ver

Çözüm:

Daha önce de belirtildiği gibi (# 11815), bu, ad alanını parçalara ayırır ve topluluğa oldukça zarar verir, dockerfile'ları artık taşınabilir hale getirir.

[Bakıcı] bu nedenle bunu kapatacak.

Red Hat, buna izin veren özel bir uygulamaya sahipti (bkz. Cevaplayıcı, ancak Docker upstream projet tarafından reddedildi ). RHEL / CentOS 7'de --add-registrybelirlenen argümana dayanıyordu /etc/containers/registries.conf.


1

Daha önce bu , Ubuntu 14:04 üzerinde çalışan ve bazı sorunları olan yapılandırma dosyasında kullanılarak DOCKER_OPTSgerçekleştirilebilirdi./etc/default/docker Ubuntu 15:04 tarihinde. Bunun düzeltilip düzeltilmediğinden emin değilim.

Aşağıdaki satır /etc/default/docker, docker daemon'unu çalıştıran ana bilgisayardaki dosyaya gitmelidir . Özel kayıt defterine yapılan değişiklik noktaları yerel ağınıza yüklenir. Not: Bu değişikliğin ardından docker hizmetini yeniden başlatmanız gerekir.

DOCKER_OPTS="--insecure-registry <priv registry hostname/ip>:<port>"

11
'--İnsecure-kayıt defteri' bayrağı docker'ın adlandırılmış kayıt defterinden TLS kimlik doğrulaması olmadan veri çekmesini sağlar. Biri belirtilmediğinde varsayılan bir kayıt defteri ayarlamaya yönelik hiçbir şey yapmaz.
Josiah

0

Guy tarafından verilen ve bugün hala geçerli olan orijinal cevaba ekliyorum (yakında 2020).

Varsayılan docker kaydını geçersiz kılmak, yapacağınız gibi maven, aslında iyi bir uygulama değildir.

Kullanırken maven, bir proxy olarak hareket edecek yerel depo yönetim sisteminiz aracılığıyla Maven Merkezi Depo'dan eserleri çekersiniz. Bu eserler düz, ham kitaplardır (kavanozlar) ve aynı adı taşıyan kavanozları itmeniz pek olası değildir.

Öte yandan, docker görüntüleri tamamen işlevseldir, çalıştırılabilir ortamlardır ve Docker Hub'dan bir görüntüyü çekmek, onu değiştirmek ve bu görüntüyü yerel kayıt yönetim sisteminizde aynı adla itmek tamamen mantıklıdır, çünkü tam olarak adının söylediği şey, sadece sizin kurumsal bağlamınızda. Bu durumda, iki görüntü arasındaki tek fark kesinlikle onun yolu olacaktır !!

Bu nedenle, aşağıdaki kuralı belirleme ihtiyacı: Bir görüntünün öneki, onun kökenini belirtir; varsayılan olarak bir görüntünün öneki yoksa Docker Hub'dan çekilir.


Tam da bu nedenle, sürümleri depolayan maven deposu varsayılan olarak üzerine yazmaya izin vermez ve sınıflandırıcılar sunar. Benzer şekilde docker, etiketleri kullanır.
coz

-5

Denemedim, ama belki /etc/hostsiçin bir satır ekleyerek DNS çözümleme sürecini ele geçirmek hub.docker.comveya benzer bir şey ( docker.io?) İşe yarayabilir mi?


4
Bu bağlantı aşamasında patlayacak; Bağlandığınız sunucu, etki alanı için uygun bir TLS sertifikasına sahip olmayacaktır.
Michael Mol
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.