2014-06-30 24 views
172

Docker'in resimlerinin yerel ana makinemde tam olarak nerede saklandığını merak ediyorum. Docker-Image'imi Docker-Hub veya Dockerfile'u kullanmadan paylaşabilirim ancak 'gerçek' Docker-Image? Ve Docker-Image'imi Docker-Hub'a 'bastığımda' tam olarak ne oluyor?Docker-Image'imi Docker-Hub'ı kullanmadan nasıl paylaşırım?

+1

: iyi bir makale [ etrafında docker görüntüleri taşıma] (https://blog.giantswarm.io/moving-docker-container-images-around/) – Mifeet

cevap

186

Docker görüntüleri dosya sistemi katmanları olarak depolanır. Dockerfile'daki her komut bir katman oluşturur. Bazı değişiklikler yaptıktan sonra komut satırından docker commit'u kullanarak da katmanları oluşturabilirsiniz (muhtemelen docker run aracılığıyla).

Bu katmanlar varsayılan olarak /var/lib/docker altında depolanır. Oradan (teorik olarak) kiraz dosyalarını oradan alıp farklı bir docker sunucusuna kurabilirken, Docker tarafından kullanılan içsel gösterim ile oynamak muhtemelen kötü bir fikirdir.

Görüntünüzü bastığınızda, bu katmanlar kayıt defterine (varsayılan olarak… resminizi başka bir kayıt defteri öneki ile etiketlemedikçe docker hub kayıt defterine) gönderilir ve orada saklanır. İçe basarken, katman kimliği yerel olarak katmanı mı yoksa indirilmesi mi gerektiğini kontrol etmek için kullanılır. docker history'u hangi katmanlarda (diğer görüntüler) kullanıldığını görmek için (ve bir dereceye kadar, hangi katmanın katmanı oluşturduğunu) kullanabilirsiniz. liman işçisi göbek kayıt defterine iterek olmadan bir görüntüyü paylaşmak için seçenekler gelince

, en iyi seçenek vardır:

  • docker save bir görüntü ya docker export bir kap. Bu, standart çıktıya bir tar dosyası gönderir, böylece docker save 'dockerizeit/agent' > dk.agent.lastest.tar gibi bir şey yapmak istersiniz. Ardından farklı bir ana bilgisayarda docker load veya docker import'u kullanabilirsiniz.

  • Kendi özel kaydınızı yaptırın. - Eski mesajlar, yorumlara bakın docker registry image'a bakın. Kurulum için önemsiz olan, ihtiyaç duyduğunuz şekilde başlatabileceğiniz ve durdurabileceğiniz bir s3 backed registry ürettik (tüm durum, seçtiğiniz s3 kabında tutulur). Bu aynı zamanda, bir kayıt defterine itme ile ilgili endişeleriniz her ne kadar olursa olsun, bir kayıt defterine iletirken ne olacağını izlemek için ilginç bir yoldur (

  • Quay.io gibi başka bir kayıt defteri kullanın (şahsen denemedim). burada da Eğer Docker Hub kendisi kullanmak istemiyorsanız

+6

Gelecekte başvurmak için, docker kayıt defteri görüntüsünün bağlantısı güncel değil. Şimdi [Docker Registry 2.0] 'i (https://docs.docker.com/registry/) ve [github/docker/dağılım]' daki kodu kullanmalısınız (https://github.com/docker/distribution) – RoelAdriaans

+1

I ' Kayıt Defteri 2.0'ın orijinali için kullanıma hazır bir yedek olduğu açık olduğundan emin değilim. Bu, http://stackoverflow.com/questions/30113726/docker-registry-2-0-api-v2 – JoshRivers

+1

'docker save' ile ilgili soru gibi bazı temel işlevleri kaçırıyor gibi görünüyor: başka birinden gelen bir görüntüyü bastığımda Bir kayıt defterine görüntü (diyelim ki python: 2.7'), ana resmin değişmediği sürece birden fazla kez yüklenmesi gerekmez. Benzer dosya boyutu optimizasyonunu elde etmek için kısmi görüntüleri kaydedebilir miyim? Bu çemberlerden atladım çünkü birden fazla görüntüye sahip bir hobim ve özel bir kayıt için para ödemek istemiyorum. – Pieter

1

this blog dayanarak, aşağıdaki komutlar idam edildi:

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

bir sunucusuna kopyalamak ve aşağıdaki gibi ithalat ise: İleride

docker load --input latestversion-1.0.0.tar 
İlgili konular