Mengunduh gambar buruh pelabuhan untuk ditransfer ke mesin yang tidak terhubung ke internet

57

Saya bekerja di kantor di mana laptop saya terhubung ke internet, tetapi dikontrol dengan ketat. Saya tidak diizinkan untuk menginstal perangkat lunak yang tidak sah ke dalamnya.

Workstation pengembangan saya adalah milik saya yang harus saya lakukan, tetapi tidak memiliki koneksi internet.

Apakah ada cara bagi saya untuk mengunduh gambar Docker dari hub sebagai file yang kemudian bisa saya sneaker-net ke workstation dev saya? Mirip dengan bagaimana saya bisa mengunduh RPM atau Permata Ruby dan membakarnya ke CD? Atau satu-satunya cara mengunduh gambar menggunakan perintah 'docker pull'?

shearn89
sumber

Jawaban:

87

Pendek: gunakan saveperintah CLI.

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


Anda dapat menarik gambar di komputer yang memiliki akses ke internet.

sudo docker pull ubuntu

Kemudian Anda dapat menyimpan gambar ini ke file

sudo docker save -o ubuntu_image.docker ubuntu

Transfer file di komputer offline (USB / CD / apa pun) dan muat gambar dari file:

sudo docker load -i ubuntu_image.docker

(Pada versi lama ini hanya docker load image.docker, lihat komentar untuk info lebih lanjut.)

Booba Skaya
sumber
Luar biasa, akan membuatnya berputar malam ini. Terima kasih!
shearn89
2
Lewati, sadari bahwa mereka tidak lagi menggunakan docker load <image>, sebagai gantinya, gunakan docker load < ubuntu_image.dockersebagai gantinya. docs.docker.com/engine/reference/commandline/load
Lionel Chan
11
harus melakukan sudo docker load -i ubuntu_image.dockeratau itu tidak akan berhasil
John Culviner
Saya mendapatkan pengaturan yang sama dengan @ shearn89, setelah menggunakan mesin lokal menggunakan dockertools dan memindahkan file ke lingkungan pengembangan. Saya mendapatkan kesalahan 'tidak dapat memuat gambar linux di windows'. Baik mesin lokal dan lingkungan pengembangan adalah windows, apakah Anda tahu bagaimana dengan alur kerja ini menyebabkan citra linux dibangun?
Ryan Haunfelder
27

Saya menyadari sudah ada jawaban yang diterima, namun saya ingin menawarkan solusi ini yang menurut saya lebih langsung menjawab pertanyaan yang diajukan: "Bagaimana cara mengunduh Gambar Docker tanpa menggunakan Docker untuk melakukan pengambilan?"

Saya memiliki masalah serupa, di mana kebijakan perusahaan saya mengharuskan saya untuk memberikan kepada tim file (biasanya dengan URL) yang ingin saya gunakan. Mereka kemudian akan melakukan berbagai pemindaian dan audit, dan kemudian menempatkan file ke jaringan pengembangan kami yang terputus. Saya tidak dapat menggunakan Docker untuk mengambil file, lalu mengekspornya dan menyerahkannya ke tim itu, jadi jawaban lain yang diberikan bukan pilihan bagi saya.

Untungnya, saya menemukan jawaban ini di atas StackOverflow, yang merekomendasikan penggunaan alat bermanfaat yang disediakan oleh samalba di GitHub: https://github.com/samalba/docker-registry-debug

Tentu saja, alat itu dimaksudkan untuk dibangun menggunakan Docker, dan sebagian alasan saya membutuhkannya adalah karena saya tidak memiliki akses terbuka ke Docker :). Jadi, karena saya tidak memiliki opsi itu, saya akan menguraikan langkah-langkah yang saya ambil di sini (ini semua sebagai komit 05fffc4344fd6f866f84c403caae3ba81193dd45 dari repo itu):

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

Output dari perintah itu adalah baris perintah ikal lengkap yang dapat digunakan untuk mengunduh file:

# 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

Semoga ini bisa membantu orang lain!

Dan
sumber