はじめに
docker pull でイメージをダウンロードするも、なぜか途中で止まってしまい、最後までイメージをダウンロードできない。そんな症状に悩まされていました。
原因は社内プロキシが色々と制限をしているせいでした。社内プロキシは、社外との通信を制限してくる嫌なやつセキュリティリスクからPCを守ってくれる良いやつですね!(世知辛い)
幸いにも、社内ネットワーク内に Private Docker Registy があり、そこを利用しても良いとのことだったので、そこへの登録手順を忘れない内にメモします。
Private Registryの構築方法はこちらをご覧ください。
以降、説明のため、公式のNode.jsのDockerイメージを入手する場合で書きます。
社外PCでイメージを入手する
まず、社外PC(社内プロキシ影響下にないPC)でDockerイメージを入手します。(え?そんなPCない?がんばれ!!)
# Docker Hub(パブリックなレジストリ)からイメージをダウンロードする
docker pull library/node:10.15.0
# イメージをtarファイルに書きだす
docker save library/node:10.15.0 > ./image.tar
この image.tar を社内PCにコピーします。(ネットワークがつながってないからUSBメモリで転送?世知辛いのじゃー)
社内PCにイメージを取り込む
次に、社内PC(社内プロキシ影響下にあるPC)にDockerイメージを取り込みます。
# tarファイルからイメージを読み込む
docker load < ./image.tar
# イメージ一覧を表示して確認
docker images
以降の作業はすべて社内PCで行います。
Private Registryへイメージを登録する
次に、社内にあるPrivate Docker RegistryへDockerイメージを登録します。説明のため、Private Registryのアドレスとポートは xxx.xxx.xxx.xxx:xxxx とします。
# イメージの名前を変更する
docker tag library/node:10.15.0 xxx.xxx.xxx.xxx:xxxx/library/node:10.15.0
# Peivate Registryにpushする(Proxy配下環境)
docker push xxx.xxx.xxx.xxx:xxxx/library/node:10.15.0
ここで、 http: server gave HTTP response to HTTPS client というエラーが、私の環境では発生しました。調べたところ、PC側のdockerの設定に insecure registries というものがあり、そこに xxx.xxx.xxx.xxx:xxxx を追加する必要があるそうです。
詳細はこちらをご覧ください。
これでプライベートレジストリへの登録ができました。
Private Registryからイメージを入手する
以下のように書くだけです。
# Peivate Registryからイメージをダウンロードする
docker pull xxx.xxx.xxx.xxx:xxxx/library/node:10.15.0
同僚のPC(社内PC)で試したところ、うまくイメージをダウンロードできました。
Dockerfileでイメージをpullする
Dockerfileも同じです。
# Peivate Registryからイメージをダウンロードする
FROM xxx.xxx.xxx.xxx:xxxx/library/node:10.15.0
さいごに
以下のサイトを参考にさせていただきました。ありがとうございました。