6

ローカル Docker レジストリをセットアップしようとしていますが、イメージをプッシュしようとすると問題が発生します。私もgithubの問題を開いた:https://github.com/docker/docker/issues/12405

環境

OS: CentOS 6.6

カーネル: 2.6.32-504.12.2.el6.x86_64

ドッカーのバージョン:

$ sudo docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1

私は企業のプロキシ ( http://domain \username:password@proxy:port) の背後にいます。

問題

次のコマンドで Docker デーモンを起動しています。

sudo docker -d --insecure-registry 127.0.0.1:49500&

docker-registry github から config_sample.yml ファイルをダウンロードし、名前を registry_config.yml に変更し、ローカル フレーバーの「storage_path」を変更しました (ボリュームをマウントする選択したディレクトリを指すため)。 :

local: &local
<<: *common
storage: local
storage_path: /image

レジストリ (バージョン 0.9.1) を開始するには、ターミナルで別のタブを開き、そのコマンドを使用します。

sudo docker run -t -i -p 127.0.0.1:49500:5000 -v $HOME/localRegistry/image:/image -e DOCKER_REGISTRY_CONFIG=$HOME/localRegistry/registry_config.yml --name registry registry /bin/bash

最初のターミナル タブに戻り、ランダムなイメージをローカル レジストリにプッシュしようとしましたが、ここでいくつかのエラーが発生しました。

$sudo docker push 127.0.0.1:49500/centos:7
INFO[1215] POST /v1.17/images/127.0.0.1:49500/centos/push?tag=7
INFO[1215] +job push(127.0.0.1:49500/centos)
INFO[1215] +job resolve_repository(127.0.0.1:49500/centos)
INFO[1215] -job resolve_repository(127.0.0.1:49500/centos) = OK (0)
invalid registry endpoint "http://127.0.0.1:49500/v0/". HTTPS attempt: unable to ping registry endpoint https://127.0.0.1:49500/v0/
v2 ping attempt failed with error: Get https://127.0.0.1:49500/v2/: read tcp 127.0.0.1:49500: connection reset by peer
v1 ping attempt failed with error: Get https://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer. HTTP attempt: unable to ping registry endpoint http://127.0.0.1:49500/v0/
v2 ping attempt failed with error: Get http://127.0.0.1:49500/v2/: read tcp 127.0.0.1:49500: connection reset by peer
v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer
INFO[1215] -job push(127.0.0.1:49500/centos) = ERR (1)
ERRO[1215] Handler for POST /images/{name:.*}/push returned error: v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer
ERRO[1215] HTTP Error: statusCode=500 v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer
FATA[0000] Error: v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer

より具体的な詳細が必要な場合は、私に尋ねてください。ご清聴ありがとうございました:)

アップデート

気が付かなかったのですが、昨日 Docker 1.4.1 から 1.5.0 にバージョンアップしたので、docker がプロキシ経由でハブに到達できていなかったようです (sudo docker search に失敗していました)。HTTP_PROXY および HTTPS_PROXY 環境変数をエクスポートし、sudo -E でデーモンを起動することで、これを修正しました。

次に、SGer が指摘したように、構成ファイルをレジストリ コンテナーに投入していませんでした。したがって、レジストリは構成にアクセスできませんでした。構成ファイルを独自のディレクトリに移動し、レジストリ コンテナーの実行時にそのディレクトリをボリュームとしてマウントすることで、これを変更しました。新しい実行コマンド:

sudo docker run -t -i -p 127.0.0.1:49500:5000 -v $HOME/localRegistry/image:/image -v $HOME/localRegistry/configDir:/configDir -e DOCKER_REGISTRY_CONFIG=configDir/config.yml --name registry registry /bin/bash

これらの 2 つの変更の後、今度は -D オプションを指定して docker デーモンを実行して、再度テストしました。出力は次のとおりです (3 つの部分に分割)。

https://gist.github.com/ekeryelleven/9714312c45b7ff21ce2a

(別のターミナル タブから) レジストリ コンテナーを起動しました: https://gist.github.com/ekeryelleven/b9bfa50bfe3221798659

次に、プッシュしました:https://gist.github.com/ekeryelleven/80f8f1d1dad00b0fbea9

更新 2

おそらくhttps://github.com/docker/docker/issues/9315にリンクされていると誰かが私に言った

私は再現しようとしました:

$ wget -O- --post-data='' 'http://127.0.0.1:49500/images'
--2015-04-16 11:01:42--  http://127.0.0.1:49500/images
Resolving <proxy>... <ip>
Connecting to <proxy>|<ip>|:<port>... connected.
Proxy request sent, awaiting response... 504 Gateway Timeout
2015-04-16 11:01:42 ERROR 504: Gateway Timeout.

そのため、ローカルレジストリにアクセスしようとしているときにプロキシが混乱しているのではないかと考えたので、docker デーモンのプロキシ構成を設定せずに最初のテストを再度実行しました (HTTP_PROXY および HTTPS_PROXY 変数なし、sudo -E なし)。出力 (3 つの部分):

http://pastebin.com/raw.php?i=XaJaSsWk

レジストリ コンテナの起動: http://pastebin.com/raw.php?i=1tux468H

プッシュ: http://pastebin.com/raw.php?i=LsvNfdQf

4

1 に答える 1

3

本当の答えではありませんが、Docker 1.6 と Registry 2.0 にアップグレードしたところ、問題はなくなりました。

于 2015-05-04T15:46:36.643 に答える