Tải xuống hình ảnh docker để chuyển đến máy không kết nối internet


57

Tôi đang làm việc trong một văn phòng nơi máy tính xách tay của tôi được kết nối internet, nhưng được kiểm soát chặt chẽ. Tôi không được phép cài đặt phần mềm trái phép vào nó.

Máy trạm phát triển của tôi là của tôi để làm theo ý tôi, nhưng nó không có kết nối internet.

Có cách nào để tôi tải xuống hình ảnh Docker từ trung tâm dưới dạng tệp mà sau đó tôi có thể sneaker-net đến máy trạm dev của mình không? Tương tự như cách tôi có thể tải xuống RPM hoặc Ruby Gems và ghi chúng vào CD? Hoặc là cách duy nhất để tải xuống hình ảnh bằng cách sử dụng lệnh 'docker pull'?

Câu trả lời:


87

Ngắn: sử dụng savelệnh CLI.

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


Bạn có thể kéo hình ảnh trên máy tính có quyền truy cập internet.

sudo docker pull ubuntu

Sau đó, bạn có thể lưu hình ảnh này vào một tập tin

sudo docker save -o ubuntu_image.docker ubuntu

Chuyển tệp trên máy tính ngoại tuyến (USB / CD / bất cứ thứ gì) và tải hình ảnh từ tệp:

sudo docker load -i ubuntu_image.docker

(Trên các phiên bản cũ hơn, đây chỉ là docker load image.docker, xem bình luận để biết thêm.)


tuyệt vời, sẽ cho nó một cơn lốc tối nay. Cảm ơn bạn!
shearn89

2
Đi qua, nhận ra rằng họ không còn sử dụng docker load <image>, thay vào đó, sử dụng docker load < ubuntu_image.dockerthay thế. docs.docker.com/engine/reference/commandline/load
Lionel Chan

11
phải làm sudo docker load -i ubuntu_image.dockerhoặc nó sẽ không hoạt động
John Culviner

Tôi đã có thiết lập tương tự như @ shearn89, sau khi sử dụng máy cục bộ bằng dockertools và chuyển tệp sang môi trường phát triển Tôi gặp lỗi 'không thể tải hình ảnh linux trên windows'. Cả máy cục bộ và môi trường phát triển đều là windows, bạn có biết điều gì về quy trình công việc này khiến hình ảnh linux được xây dựng không?
Ryan Haunfelder

27

Tôi nhận ra rằng đã có một câu trả lời được chấp nhận, tuy nhiên tôi muốn đưa ra giải pháp này mà tôi nghĩ rằng trực tiếp giải quyết câu hỏi hơn: "Làm cách nào để tải xuống Docker Image mà không sử dụng Docker để thực hiện truy xuất?"

Tôi có một vấn đề tương tự, trong đó các chính sách của công ty tôi yêu cầu tôi cung cấp cho nhóm (các) tệp (thường là bằng URL) mà tôi muốn sử dụng. Sau đó, họ sẽ thực hiện các lần quét và kiểm toán khác nhau, sau đó đặt (các) tệp lên mạng phát triển bị ngắt kết nối của chúng tôi. Tôi không thể sử dụng Docker để truy xuất tệp, sau đó xuất tệp và trao cho nhóm đó, vì vậy câu trả lời khác được cung cấp không phải là một tùy chọn cho tôi.

May mắn thay, tôi đã tìm thấy câu trả lời này trên StackOverflow, khuyến nghị sử dụng một công cụ hữu ích được cung cấp bởi samalba tại GitHub: https://github.com/samalba/docker-registry-debug

Tất nhiên, công cụ đó được xây dựng bằng Docker và một phần lý do tôi cần là vì tôi không có quyền truy cập mở vào Docker :). Vì vậy, vì tôi không có tùy chọn đó, tôi sẽ đánh vần các bước tôi đã thực hiện ở đây (đây là tất cả theo cam kết 05fffc4344fd6f866f84c403caae3ba81193dd45 từ repo đó):

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

Đầu ra của lệnh đó là một dòng lệnh curl hoàn chỉnh có thể được sử dụng để tải xuống tệp:

# 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

Hy vọng điều này sẽ giúp người khác!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.