Pobieranie obrazu dokera do przesłania na maszynę niepołączoną z Internetem

57

Pracuję w biurze, w którym mój laptop jest podłączony do Internetu, ale ściśle kontrolowany. Nie wolno mi instalować na nim nieautoryzowanego oprogramowania.

Moja stacja robocza do programowania jest moja, jak mi się podoba, ale nie ma połączenia z Internetem.

Czy jest jakiś sposób, aby pobrać obrazy Dockera z centrum jako plik, który mógłbym następnie sneaker-net na mojej stacji roboczej? Podobnie jak mogę pobrać RPM lub Ruby Gems i nagrać je na CD? Czy jest to jedyny sposób pobierania obrazów za pomocą polecenia „puller docker”?

shearn89
źródło

Odpowiedzi:

87

Krótko: użyj savepolecenia CLI.

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


Możesz pobrać obraz na komputerze, który ma dostęp do Internetu.

sudo docker pull ubuntu

Następnie możesz zapisać ten obraz do pliku

sudo docker save -o ubuntu_image.docker ubuntu

Prześlij plik na komputer offline (USB / CD / cokolwiek) i załaduj obraz z pliku:

sudo docker load -i ubuntu_image.docker

(W starszych wersjach było to po prostu docker load image.dockerzobacz komentarze, aby uzyskać więcej informacji.)

Booba Skaya
źródło
niesamowite, sprawi, że tego wieczoru będzie wirować. Dziękuję Ci!
shearn89
2
Przechodź, zdając sobie sprawę, że już nie używają docker load <image>, zamiast tego używaj docker load < ubuntu_image.docker. docs.docker.com/engine/reference/commandline/load
Lionel Chan
11
musiał zrobić, bo sudo docker load -i ubuntu_image.dockerinaczej by to nie zadziałało
John Culviner,
Mam taką samą konfigurację jak @ shearn89, po wjechaniu na lokalną maszynę za pomocą dockertools i przeniesieniu pliku do środowiska programistycznego, pojawia się błąd „nie mogę załadować obrazu linux na Windows”. Zarówno lokalna maszyna, jak i środowiska programistyczne są oknami, czy wiesz, co z tym przepływem pracy powoduje zbudowanie obrazu systemu Linux?
Ryan Haunfelder
27

Zdaję sobie sprawę, że odpowiedź jest już zaakceptowana, ale chciałem zaoferować to rozwiązanie, które moim zdaniem bardziej odpowiada na zadane pytanie: „Jak pobrać obraz Dockera bez użycia Dockera do wykonania wyszukiwania?”

Mam podobny problem, gdy zasady mojej firmy wymagają ode mnie dostarczenia zespołowi plików (zazwyczaj poprzez adres URL), których chcę użyć. Następnie wykonają różne skany i audyty, a następnie umieszczą pliki w naszej rozłączonej sieci programistycznej. Nie mogę użyć Dockera do pobrania pliku, a następnie wyeksportowania go i przekazania go temu zespołowi, więc inna podana odpowiedź nie była dla mnie opcją.

Na szczęście znalazłem odpowiedź na StackOverflow, który zaleca użycie przydatnego narzędzia dostarczonego przez samalba z GitHub: https://github.com/samalba/docker-registry-debug

Oczywiście to narzędzie miało zostać zbudowane przy użyciu Dockera, a powodem tego jest to, że nie mam otwartego dostępu do Dockera :). Ponieważ nie miałem tej opcji, opiszę kroki, które tutaj podjąłem (to wszystko od momentu zatwierdzenia 05fffc4344fd6f866f84c403caae3ba81193dd45 z tego repozytorium):

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

Dane wyjściowe tego polecenia to kompletny wiersz polecenia curl, którego można użyć do pobrania pliku:

# 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

Mam nadzieję, że to pomaga komuś innemu!

Dan
źródło