İnternet bağlantısı olmayan bir makineye aktarmak için liman görüntüsünü indirme


57

Dizüstü bilgisayarımın internete bağlı olduğu ancak sıkıca kontrol edildiği bir ofiste çalışıyorum. Buna yetkisiz yazılım yüklemem yasak.

Geliştirme iş istasyonum benim istediğim gibi yapacak, ancak internet bağlantısı yok.

Docker görüntülerini hub'dan, daha sonra iş istasyonumdan sneaker-net olarak alabileceğim bir dosya olarak indirmenin bir yolu var mı? RPM'leri veya Ruby Gems'i nasıl indirebilir ve CD'ye yazabilirim? Yoksa görüntüleri 'docker pull' komutunu kullanarak indirmenin tek yolu mu?

Yanıtlar:


86

Kısa: saveCLI komutunu kullanın.

https://docs.docker.com/engine/reference/commandline/save/


Görüntüyü İnternet erişimi olan bir bilgisayarda çekebilirsiniz.

sudo docker pull ubuntu

Sonra bu görüntüyü bir dosyaya kaydedebilirsiniz.

sudo docker save -o ubuntu_image.docker ubuntu

Dosyayı çevrimdışı bilgisayara aktarın (USB / CD / herneyse) ve resmi dosyadan yükleyin:

sudo docker load -i ubuntu_image.docker

(Eski versiyonlarda bu sadece docker load image.docker, daha fazla bilgi için yorumları görün.)


harika, bu akşam bir koşuşturma verecek. Teşekkür ederim!
shearn89 11

2
Geçin, artık kullanmadıklarını fark ettik docker load <image>, yerine docker load < ubuntu_image.dockerkullanın. docs.docker.com/engine/reference/commandline/load
Lionel Chan

11
yapmak zorundaydı sudo docker load -i ubuntu_image.dockerya da işe yaramayacaktı
John Culviner

@ Shearn89 ile aynı kurulumu yaptım, docktools kullanarak yerel bir makineyi çektikten ve dosyayı geliştirme ortamına taşıdıktan sonra 'pencerelere linux görüntü yükleyemiyorum' hatası alıyorum. Hem yerel makine hem de geliştirme ortamları pencerelidir, bu iş akışının neyin oluşturulduğunu biliyor musunuz?
Ryan Haunfelder

27

Kabul edilmiş bir cevap olduğunu fark ettim, ancak soruyu daha doğrudan ele aldığımı düşündüğüm bu çözümü sunmak istedim: "Alma işlemini gerçekleştirmek için Docker kullanmadan nasıl bir Docker Görüntüsü indiririm?"

Şirket politikalarımın kullanmak istediğim dosya (lar) ı (genellikle URL yoluyla) içeren bir ekip sağlamamı istediği benzer bir sorunum var. Daha sonra çeşitli taramalar ve denetimler gerçekleştirecekler ve ardından dosyaları bağlantısını kesilmiş geliştirme ağımıza yerleştireceklerdir. Docker'ı dosyayı almak için kullanamıyorum, sonra dışa aktarıp o takıma veremiyorum, bu nedenle verilen diğer cevap benim için bir seçenek değildi.

Neyse ki, bu cevabı GitHub'da samalba tarafından sağlanan kullanışlı bir araç kullanmanızı tavsiye eden StackOverflow'ta buldum : https://github.com/samalba/docker-registry-debug

Tabii ki, bu araç Docker kullanılarak oluşturulmaktaydı ve ihtiyacımın bir nedeni Docker'a açık erişimim olmadığı için :). Bu nedenle, bu seçeneğe sahip olmadığım için, burada attığım adımları açıklayacağım (bu işlemin tümü, bu depodan 05fffc4344fd6f866f84c403caae3ba81193dd45):

$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu

Bu komutun çıktısı, dosyayı indirmek için kullanılabilecek eksiksiz bir kıvrılma komut satırıdır:

# Reading user/passwd from env var "USER_CREDS"
# No password provided, disabling auth
# Getting token from https://index.docker.io
# Got registry endpoint from the server: https://registry-1.docker.io
# Got token: signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read
curl -i --location-trusted -I -X GET -H "Authorization: Token signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read" https://registry-1.docker.io/v1/images/ubuntu/layer

Umarım bu başka birine yardım eder!

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.