2016-04-01 29 views
1

Bazı atışlı docker görüntülerini dağıtmak istiyorum (yalnızca bir kez başlatılan ve doğrudan kaldırılan görüntü). Bunu başarmak için docker resmimi diğer ana bilgisayarların çekebileceği docker kayıt defterine itmeliyim. Diğer docker sunucuları bu resmi çeker, çalıştırır ve sonlandırıldıktan sonra kaldırır.Dinamik Docker Kayıt Defteri

Maalesef (afaik) özel bir docker kayıt defterinden resimleri kaldırmanın kolay ve temiz bir yolu yoktur.

Dağıtım için kullanabileceğim bir throw docking docker kayıt defteri başlatmanın kolay bir yolu var mı? Güvenli olmayan bir kaydı kabul etmenin bir yolu var mı? --insecure-registry

belki liman işçisi kayıt kullanmadan bir liman işçisi görüntüsünü dağıtmak için alternatif bir seçenek var mı:

Şimdiye kadar hep yoluyla güvensiz kayıt yapılandırmak zorunda?

cevap

1

Elbette, görüntüleri dağıtma konusunda birkaç yol vardır. Muhtemelen bahsetmem gereken en önemli şey, bir kayıt defterinin (özellikle dağıtım ekibi tarafından desteklenen en yeni sürüm olan "v2 kayıt defteri") is kind of a pain. Bu süper zor değil ve kayıt defterinin ilk sürümü olan ışık yılı (eski python projesi), ancak özellikle bu hızlı ve kolay bir çözüm aradığınız için bu özel problemin içine dalmak istediğiniz bir şey değil.

Yani, görüntüleri veya kapları tarball arşivleri olarak dağıtmaya devam ediyorsunuz. Burada kullanabileceğiniz iki komut kümesi vardır ve bazı küçük (ama önemli) farklılıklar vardır. Öncelikle, kapsayıcı değil, sadece görüntüyü aktarmaya bakalım. Bu nedenle, docker ana bilgisayarında docker save kullanıyorsunuz ve sonra tarpayı hedef makineye aktarıyorsunuz ve daha sonra tarball'dan bir görüntü oluşturmak için docker load'u kullanacaksınız. Örneğin, ana bilgisayarda:

docker save --output myImage.tar myImage:latest 

Ve sonra rsync veya sftp (ya da herneyse) hedef makineye myImage.tar Tarball'ı transfer etmek olabilir. Sonra bu ana bilgisayarda: Oldukça basit, ama Diyelim ki Aktarmak istediğiniz bir görüntüyle kaçan bir kap var diyelim

docker load --input myImage.tar 

. Sorun, görüntüyü aktarabilmeniz, ancak başladığından beri görüntü dosya sisteminde yapılan tüm değişiklikleri kaybedecektir. Bunun etrafında docker export ve docker import kullanmaktır. Bu, temel dosya sistemi görüntüsü ile birlikte tüm ara değişikliklerin dosya sistemine kaydedilmesini sağlayacaktır.

Yani, docker host'unuzdaki docker export komutunu ve elbette hedef makinenizdeki docker import komutunu kullanacaksınız. Diğer örnekte olduğu gibi, hedef makineye docker export tarafından oluşturulan katranı aktarmanız gerekecektir. Örneğin, liman işçisi ana bilgisayarda:

docker export myContainer > myContainer.tar 

Ve sonra hedef makinede, buna myContainer.tar aktardıktan sonra:

Şimdi
cat myContainer.tar | docker import - jotschi/myContainerImage 

bir görüntü hedefte jotschi/myContainerImage denilen var Daha sonra bir kapsayıcı oluşturabileceğiniz:

docker run -d --name=myContainer -p 80:80 jotschi/myContainerImage 
İlgili konular