docker-desktop-for-windowsからpullしてリモートサーバのdocker-registryのイメージファイルを取得する

2020年12月21日

docker-desktop-for-windowsからpullしてリモートサーバのdocker-registryのイメージファイルを取得する

ローカル環境ではdocker-desktop-for-windwosで開発しています。ポートフォワーディングしてリモートにあるregistryからイメージを取得しようとしていたのですがエラーがでてきてしまったので解決方法を書き残しておきます。ポイントは「ローカルホストをLISTENさせる」事でした。docker-registryをまだ作成した事がない方はこちらからどうぞ。イメージは下の通りです。

レジストリ用コンテナを作成

まずはリモートサーバーの中にレジストリ用コンテナを作成します。docker-composeで最小限の設定で作成します。


version: '3'
services:
  registry:
    image: registry:latest
    container_name: registry
    privileged: true
    restart: always
    expose:
      - "5000"
    ports:
      - "127.0.0.1:5000:5000"

これでリモートサーバにの「127.0.0.1:5000」にアクセスしたらレジストリのイメージにアクセスできるようになます。出来たらイメージをpushしておきましょう。

ローカルフォワードの設定

「.ssh\config」で下記を記載してあげます。


Host remote
  HostName remote.co.jp
  User hoge
  IdentityFile C:\Users\hoge\fuga\id_rsa
  ForwardAgent yes
  LocalForward 192.168.xxx.xxx:5000 127.0.0.1:5000

リモートサーバへのSSHの設定です。「LocalForward」の部分の「192.168.xxx.xxx」は自分のPCのIPアドレスを設定してあげてください。これをしないと「(docker-desktopが動いている)hyper-v内のVMからローカルのPCにアクセスできないためです。ここが「localhost:5000」などだとうまくいかず下記のようなエラーが発生します。


Error response from daemon: Get http://127.0.0.1:5000/v2/: dial tcp 127.0.0.1:5000: connect: connection refused

ここら辺は下記のサイトが詳しく説明して下さっています。
いますぐ実践! Linux システム管理

ここまで出来たら「remote」サーバにSSHをしている状態で下記のコマンドを打ち込めばイメージファイルを取得できます。


docker pull 192.168.xxx.xxx:5000/image_name:tag

2020年12月21日