กำลังดาวน์โหลดอิมเมจ docker สำหรับถ่ายโอนไปยังเครื่องที่ไม่ได้เชื่อมต่ออินเทอร์เน็ต


57

ฉันทำงานในสำนักงานที่แล็ปท็อปของฉันเชื่อมต่ออินเทอร์เน็ต แต่มีการควบคุมอย่างแน่นหนา ฉันไม่ได้รับอนุญาตให้ติดตั้งซอฟต์แวร์ที่ไม่ได้รับอนุญาตลงบนซอฟต์แวร์

เวิร์คสเตชั่พัฒนาของฉันเป็นของฉันด้วย แต่ฉันไม่มีการเชื่อมต่ออินเทอร์เน็ต

มีวิธีใดบ้างที่ฉันจะดาวน์โหลดอิมเมจ Docker จากฮับเป็นไฟล์ที่ฉันสามารถใช้กับรองเท้าเวิร์คสเตชั่น dev ของฉันได้? คล้ายกับฉันจะดาวน์โหลด RPM หรือ Ruby Gems และเขียนลงซีดีได้อย่างไร หรือเป็นวิธีเดียวในการดาวน์โหลดรูปภาพโดยใช้คำสั่ง 'docker pull'?

คำตอบ:


86

สั้น: ใช้saveคำสั่ง CLI

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


คุณสามารถดึงภาพบนคอมพิวเตอร์ที่สามารถเข้าถึงอินเทอร์เน็ต

sudo docker pull ubuntu

จากนั้นคุณสามารถบันทึกภาพนี้เป็นไฟล์

sudo docker save -o ubuntu_image.docker ubuntu

ถ่ายโอนไฟล์บนคอมพิวเตอร์ออฟไลน์ (USB / CD / อะไรก็ตาม) และโหลดภาพจากไฟล์:

sudo docker load -i ubuntu_image.docker

(สำหรับรุ่นเก่านี่เป็นเพียงแค่docker load image.dockerดูความคิดเห็นสำหรับข้อมูลเพิ่มเติม)


ยอดเยี่ยมจะให้มันหมุนวนในเย็นวันนี้ ขอขอบคุณ!
shearn89

2
ผ่านโดยตระหนักว่าพวกเขาไม่ได้ใช้docker load <image>แทนใช้docker load < ubuntu_image.dockerแทน docs.docker.com/engine/reference/commandline/load
Lionel Chan

11
ต้องทำsudo docker load -i ubuntu_image.dockerหรือไม่ได้ผล
John Culviner

ฉันมีการตั้งค่าเช่นเดียวกับ @ shearn89 หลังจากดึงเครื่องท้องถิ่นโดยใช้ dockertools และย้ายไฟล์ไปยังสภาพแวดล้อมการพัฒนาฉันได้รับข้อผิดพลาด 'ไม่สามารถโหลดอิมเมจ linux บน windows' ทั้งสภาพแวดล้อมของเครื่องและการพัฒนาเป็นหน้าต่างคุณรู้หรือไม่ว่าเวิร์กโฟลว์นี้ทำให้อิมเมจ linux ถูกสร้างขึ้นได้อย่างไร
Ryan Haunfelder

27

ฉันรู้ว่ามีคำตอบที่ยอมรับแล้ว แต่ฉันต้องการเสนอวิธีแก้ปัญหานี้ซึ่งฉันคิดว่าตรงกับคำถามที่ถามมากขึ้น: "ฉันจะดาวน์โหลดรูปภาพ Docker โดยไม่ใช้ Docker เพื่อทำการดึงข้อมูลได้อย่างไร"

ฉันมีปัญหาที่คล้ายกันซึ่งนโยบายของ บริษัท ของฉันกำหนดให้ฉันต้องให้ไฟล์กับทีม (โดยทั่วไปคือ URL) ที่ฉันต้องการใช้ พวกเขาจะทำการสแกนและตรวจสอบต่าง ๆ จากนั้นวางไฟล์ลงในเครือข่ายการพัฒนาที่ไม่ได้เชื่อมต่อของเรา ฉันไม่สามารถใช้ Docker เพื่อดึงไฟล์จากนั้นส่งออกและส่งมอบให้กับทีมนั้นดังนั้นคำตอบอื่น ๆ ที่ให้นั้นไม่ใช่ตัวเลือกสำหรับฉัน

โชคดีที่ฉันพบคำตอบนี้ใน StackOverflow ซึ่งแนะนำให้ใช้เครื่องมือที่มีประโยชน์ซึ่งจัดหาโดย samalba ที่ GitHub: https://github.com/samalba/docker-registry-debug

แน่นอนว่าเครื่องมือนั้นถูกสร้างขึ้นโดยใช้ Docker และส่วนหนึ่งของเหตุผลที่ฉันต้องการคือเพราะฉันไม่สามารถเข้าถึง Docker ได้ :) ดังนั้นเนื่องจากฉันไม่มีตัวเลือกฉันจะอธิบายขั้นตอนที่ฉันทำที่นี่ (นี่คือทั้งหมดที่เกิดจากการกระทำ

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

เอาต์พุตของคำสั่งนั้นเป็นบรรทัดคำสั่ง curl ที่สมบูรณ์ซึ่งสามารถใช้เพื่อดาวน์โหลดไฟล์:

# 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

หวังว่านี่จะช่วยคนอื่นได้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.