Vraag Docker-afbeelding downloaden voor overdracht naar niet-internet-verbonden machine


Ik werk op een kantoor waar mijn laptop met internet is verbonden, maar strak wordt beheerd. Ik mag er geen ongeoorloofde software op installeren.

Mijn ontwikkelwerkstation is de mijne om te doen waar ik wil, maar het heeft geen internetverbinding.

Is er een manier voor mij om Docker-afbeeldingen van de hub te downloaden als een bestand dat ik vervolgens zou kunnen snetreren naar mijn dev-werkstation? Vergelijkbaar met hoe ik RPM's of Ruby Gems kan downloaden en op CD kan branden? Of is de enige manier om de afbeeldingen te downloaden met de opdracht 'koppelingshendel'?


42
2018-06-24 10:19


oorsprong




antwoorden:


Kort: gebruik de save CLI-opdracht.

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


U kunt de afbeelding op een computer plaatsen die toegang heeft tot internet.

sudo docker pull ubuntu

Vervolgens kunt u deze afbeelding opslaan in een bestand

sudo docker save -o ubuntu_image.docker ubuntu

Breng het bestand over naar de offline computer (USB / CD / whatever) en laad de afbeelding uit het bestand:

sudo docker load -i ubuntu_image.docker

(In oudere versies was dit gewoon docker load image.docker, zie opmerkingen voor meer info.)


67
2017-09-02 05:41



geweldig, het zal vanavond een werveling geven. Dank je! - shearn89
Passeer, besefte dat ze niet langer gebruiken docker load <image>gebruik in plaats daarvan docker load < ubuntu_image.docker in plaats daarvan. docs.docker.com/engine/reference/commandline/load - Lionel Chan
moest doen sudo docker load -i ubuntu_image.docker of het zou niet werken - John Culviner
Ik heb dezelfde setup als @ shearn89, nadat ik op een lokale machine heb geprobeerd met dockertools te werken en het bestand naar de ontwikkelomgeving te verplaatsen. Ik krijg de fout 'can not linux image on windows'. Zowel de lokale machine- als ontwikkelomgeving zijn vensters, weet u hoe deze workflow er voor zorgt dat er een linux-image wordt gebouwd? - Ryan Haunfelder


Ik realiseer me dat er al een geaccepteerd antwoord is, maar ik wilde deze oplossing aanbieden waarvan ik denk dat deze meer direct ingaat op de vraag: "Hoe kan ik een Docker-afbeelding downloaden zonder Docker te gebruiken om het op te halen?"

Ik heb een soortgelijk probleem, waarbij het beleid van mijn bedrijf me verplicht om een ​​team de bestanden te leveren (meestal via een URL) die ik wil gebruiken. Ze zullen vervolgens verschillende scans en audits uitvoeren en de bestanden vervolgens in ons losgekoppelde ontwikkelingsnetwerk plaatsen. Ik kan Docker niet gebruiken om het bestand op te halen, het dan te exporteren en over te dragen aan dat team, dus het andere gegeven antwoord was geen optie voor mij.

Gelukkig vond ik dat deze antwoord op StackOverflow, waarin wordt aanbevolen een handige tool te gebruiken die door samalba op GitHub wordt aangeboden: https://github.com/samalba/docker-registry-debug

Natuurlijk moest die tool gebouwd worden met behulp van Docker, en een deel van de reden dat ik het nodig heb is omdat ik geen open toegang tot Docker heb :). Dus omdat ik die optie niet had, zal ik de stappen beschrijven die ik hier heb gezet (dit is allemaal vanaf commit 05fffc4344fd6f866f84c403caae3ba81193dd45 uit die repo):

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

De uitvoer van die opdracht is een volledige curl-opdrachtregel die kan worden gebruikt om het bestand te downloaden:

# 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

Ik hoop dat dit iemand anders helpt!


19
2018-01-01 04:51