インターネットに接続されていないマシンに転送するためのdockerイメージのダウンロード


57

私は、ラップトップがインターネットに接続されているが厳重に管理されているオフィスで働いています。無許可のソフトウェアをインストールすることはできません。

私の開発ワークステーションは、私が好きなようにやるべきことですが、インターネットに接続していません。

ハブからDockerイメージをファイルとしてダウンロードして、sneaker-netを開発ワークステーションにダウンロードする方法はありますか?RPMまたはRuby GemsをダウンロードしてCDに書き込む方法に似ていますか?または、「docker pull」コマンドを使用して画像をダウンロードする唯一の方法ですか?

回答:


87

短い:saveCLIコマンドを使用します。

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


インターネットにアクセスできるコンピューターでイメージをプルできます。

sudo docker pull ubuntu

その後、この画像をファイルに保存できます

sudo docker save -o ubuntu_image.docker ubuntu

オフラインコンピューター(USB / CD / whatever)でファイルを転送し、ファイルからイメージをロードします。

sudo docker load -i ubuntu_image.docker

(古いバージョンでは、これは単なるdocker load image.dockerでした。詳細についてはコメントを参照してください。)


素晴らしい、今晩それを旋回させます。ありがとうございました!
sheern89

2
通り過ぎて、docker load <image>代わりにを使用せdocker load < ubuntu_image.dockerず、代わりに使用することに気付きました。docs.docker.com/engine/reference/commandline/load
ライオネルチャン

11
しなけれsudo docker load -i ubuntu_image.dockerばならなかったまたはそれは動作しませんでした
ジョンカルビナー

@ shearn89と同じセットアップがあります。dockertoolsを使用してローカルマシンを取得し、ファイルを開発環境に移動すると、「WindowsにLinuxイメージをロードできません」というエラーが表示されます。ローカルマシンと開発環境の両方がウィンドウです。このワークフローがLinuxイメージを構築する原因は何ですか?
ライアンハウンフェルダー

27

すでに受け入れられている答えがあることに気づきましたが、このソリューションを提供したかったので、「検索を実行するためにDockerを使用せずにDockerイメージをダウンロードするにはどうすればよいですか?」

私の会社のポリシーでは、使用したいファイル(通常はURL)をチームに提供する必要があるという同様の問題があります。その後、さまざまなスキャンと監査を実行し、接続されていない開発ネットワークにファイルを配置します。Dockerを使用してファイルを取得し、それをエクスポートしてそのチームに渡すことはできません。そのため、提供された他の回答は私にとって選択肢ではありませんでした。

幸いなことに、GitHubのsamalbaが提供する便利なツールを使用することを推奨しているStackOverflowでこの答えを見つけました:https : //github.com/samalba/docker-registry-debug

もちろん、このツールはDockerを使用してビルドすることを目的としており、Dockerにオープンアクセスがないため、必要な理由の1つはDockerです:)。そのため、そのオプションがなかったため、ここで行った手順を詳しく説明します(これはすべて、そのリポジトリからのコミット05fffc4344fd6f866f84c403caae3ba81193dd45の時点のものです)。

$ 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.