Docker-Hub'ımı kullanmadan Docker-Image'ımı nasıl paylaşabilirim?


257

Docker'ın görüntülerinin yerel ana makinemde tam olarak nerede saklandığını merak ediyorum. Docker-Image'ımıDocker-HubDockerfile `` gerçek '' Docker-Image'ı veya 'nı ? Ve Docker-Image'ımı Docker-Hub'a 'ittiğimde' tam olarak ne oluyor?


2
İleride
başvurmak

Yanıtlar:


243

Docker görüntüleri dosya sistemi katmanları olarak saklanır. Dockerfile içindeki her komut bir katman oluşturur. docker commitBazı değişiklikler yaptıktan sonra ( docker runmuhtemelen üzerinden ) komut satırından kullanarak katmanlar da oluşturabilirsiniz .

Bu katmanlar varsayılan olarak altında saklanır /var/lib/docker. (Teorik olarak) oradan dosyaları seçip farklı bir docker sunucusuna yükleyebilmenize rağmen, Docker tarafından kullanılan dahili temsil ile oynamak muhtemelen kötü bir fikirdir.

Resminizi ittiğinizde, bu katmanlar kayıt defterine gönderilir (varsayılan olarak docker hub kayıt defteri… resminizi başka bir kayıt defteri önekiyle etiketlemediğiniz sürece) ve orada saklanır. İçe aktarırken, katman kimliği zaten yerel olarak katmanınızın olup olmadığını veya indirilmesi gerektiğini kontrol etmek için kullanılır. Kullanabilirsinizdocker history katmanları (diğer resimler) (katman oluşturulan komutu belli bir ölçüye kadar, ve benzeri) kullanılır hangi peek.

Docker hub kayıt defterine zorlamadan görüntü paylaşma seçeneklerine gelince, en iyi seçenekleriniz:

  • docker savebir görüntü veya docker exportkap. Bu, bir tar dosyasını standart çıktıya çıktılar, böylece böyle bir şey yapmak istersiniz docker save 'dockerizeit/agent' > dk.agent.latest.tar. Daha sonra docker loadveya docker importfarklı bir ana bilgisayarda kullanabilirsiniz.

  • Kendi özel kayıt defterinizi barındırın. - Eski, yorumlara bakın Docker kayıt defteri görüntüsüne bakın . Kurulum için önemsiz olan, gerektiğinde başlatabileceğiniz ve durdurabileceğiniz bir s3 destekli kayıt defteri oluşturduk (tüm durum seçtiğiniz s3 kovasında tutulur). Bu aynı zamanda bir kayıt defterine geçerken neler olduğunu izlemenin ilginç bir yoludur

  • Her ne kadar docker hub ile ilgili endişeniz ne olursa olsun muhtemelen burada da uygulanacaktır rağmen quay.io (ben şahsen denedim) gibi başka bir kayıt defteri kullanın .


6
İleride başvurmak için, docker kayıt defteri resminin bağlantısı eski. Şimdi Docker Registry 2.0'ı ve github / docker / dağıtım
RoelAdriaans

1
Registry 2.0'ın orijinali için kullanıma hazır bir yedek olduğundan emin değilim. Arama stackoverflow.com/questions/30113726/docker-registry-2-0-api-v2
JoshRivers

1
Hakkında soru docker save: Başka bir görüntüden türetilen bir görüntüyü (diyelim python:2.7) bir kayıt defterine ittiğimde, değişmedikçe üst görüntünün birden çok kez yüklenmesi gerekmez. Benzer bir dosya boyutu optimizasyonu elde etmek için kısmi görüntüleri kaydedebilir miyim? Bu çemberlerden atlıyorum çünkü birden fazla görüntüye sahip bir hobim ve özel bir kayıt için ödeme yapmak istemiyorum.
Pieter

4
Src dosyalarını sadece bir Dockerfile da dahil olmak üzere bir git deposundan ve docker buildana bilgisayarda çekemez misiniz?
jshxe

1
Yapımın @Jishaxe kısmı npm install... Çok az hafızaya sahip olduğu ve bu adımın her zaman başarısız olduğu için ev sahibime yapamam (bkz: github.com/npm/npm/issues/5021 )
Soft Bullets

46

Bu bloga dayanarak, bir docker kaydı olmadan bir docker görüntüsü paylaşılabilir:

docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0

Bu komut tamamlandıktan sonra, görüntü bir sunucuya kopyalanabilir ve aşağıdaki gibi içe aktarılabilir:

docker load --input latestversion-1.0.0.tar

18

Bir docker görüntüsünü uzak bir sunucuya göndermek 3 basit adımda yapılabilir:

  1. Yerel olarak docker görüntüsünü bir .tar olarak kaydedin :
docker save -o <path for created tar file> <image name>
  1. Yerel olarak, kullanım scp aktarmak .tar uzaktan kumandaya

  2. Uzak sunucuda docker'a görüntü yükleyin:

docker load -i <path to docker image tar file>

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.