Dockerを1.12に更新した後、画像をプル/プッシュできません


86

プライベートレジストリはdocker1.10.3に基づいて正常に機能しましたが、dockerが1.12.0に更新された後、イメージをプル/プッシュできません。

/ etc / sysconfig / dockerを次のように変更しました。

OPTIONS='--selinux-enabled=true --insecure-registry=myip:5000'

または

OPTIONS='--selinux-enabled=true --insecure-registry myip:5000'

しかし、プル/プッシュを実行すると、次のエラーが発生しました:

$ docker pull myip:5000/cadvisor
Using default tag: latest
Error response from daemon: Get https://myip:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Dockerを1.10.3に戻しても、以下のように機能します。

$ docker pull myip:5000/cadvisor
Using default tag: latest
Trying to pull repository myip:5000/cadvisor ... 
latest: Pulling from myip:5000/cadvisor
09d0220f4043: Pull complete 
a3ed95caeb02: Pull complete 
151807d34af9: Pull complete 
14cd28dce332: Pull complete     
Digest:
sha256:33b6475cd5b7646b3748097af1224de3eee3ba7cf5105524d95c0cf135f59b47
Status: Downloaded newer image for myip/cadvisor:latest

いくつかの相対的な情報を以下に示します。

docker version
Client:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

Server:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built:

OS/Arch: linux/amd64

docker info
Containers: 4
Running: 1
Paused: 0
Stopped: 3
Images: 241
Server Version: 1.12.0
Storage Driver: devicemapper
Pool Name: docker-253:0-6809-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 5.459 GB
Data Space Total: 107.4 GB
Data Space Available: 34.74 GB
Metadata Space Used: 9.912 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.138 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use '--storage-opt dm.thinpooldev' to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host overlay null bridge
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-229.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.39 GiB
Name: server_3
ID: TITS:BL4B:M5FE:CIRO:5SW6:TVIV:HW36:J7OS:WLHF:46T6:2RBA:WCNV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 21
Goroutines: 32
System Time: 2016-08-02T10:33:06.414048675+08:00
EventsListeners: 0
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
127.0.0.0/8

docker exec <registry-container> registry -version
registry github.com/docker/distribution v2.2.1

Dockerデーモンをデバッグモードで再起動した後、問題を再現したときのデーモンログを以下に示します。

DEBU[0794] Calling POST /v1.24/images/create?fromImage=10.10.10.40%3A5000%2Fcadvisor&tag=latest 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000 
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v2 
WARN[0794] Error getting v2 registry: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v2/: http: server gave HTTP response to HTTPS client
DEBU[0794] Trying to pull 10.10.10.40:5000/cadvisor from https://10.10.10.40:5000 v1 
DEBU[0794] hostDir: /etc/docker/certs.d/10.10.10.40:5000
DEBU[0794] attempting v1 ping for registry endpoint https://10.10.10.40:5000/v1/
DEBU[0794] Fallback from error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
ERRO[0794] Attempting next endpoint for pull after error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client
ERRO[0794] Handler for POST /v1.24/images/create returned error: Get https://10.10.10.40:5000/v1/_ping: http: server gave HTTP response to HTTPS client 
DEBU[1201] clean 2 unused exec commands

さらに、単純なコマンドを実行してテスト用のプライベートレジストリを起動するだけで、その他はデフォルトで次のようになります。

docker run -d -p 5000:5000 --restart=always --name registry -v 'pwd'/data:/var/lib/registry registry:2

プロキシは構成されていません。要約すると、これはテスト用の静かなサンプル環境にすぎません。


まあ、私も同じエラーに直面していますが、奇妙なことに、RHEL7に/ etc / sysconfig / dockerファイルがありません。私が見つけることができる同様のファイルを知っていますか?このDockerファイルの内容は何ですか?ありがとうございました。
sai 2016

Dockerデーモンの実行方法を変更する場合、このファイルにはいくつかのオプションが含まれています。RHEL7の正確なパスはわかりませんが、コマンド「$ sudo
Locate docker

最終的に/etc/docker/daemon.jsonを削除し、dockerサービスを再起動しました。これは、/ etc / sysconfig /
docker

MacOSユーザーの場合は、次の回答を参照してください:stackoverflow.com/a/39492340/706521
Adrian Forsius 2018

回答:


222

私も同じ問題を抱えていました。

これは私を助けました:

  • クライアントマシンで/etc/docker/daemon.json 作成または変更します

    { "insecure-registries":["myregistry.example.com:5000"] }

  • Dockerデーモンを再起動します

    sudo /etc/init.d/docker restart


7
私の場合、Ubuntu 16.04を使用しており、/ etc / default / docker(構成があった場所)はupstartに固有です。16.04はsystemdを使用します。/etc/docker/daemon.jsonは、プラットフォームに依存しない構成です。github.com/docker/docker/issues/23512 github.com/docker/docker/issues/23228
bojtib

1
ここではどのようにセットアップ安全でないレジストリに文書で docs.docker.com/registry/insecureは
Ivailo Bardarov

6
/etc/docker/daemon.json存在しない場合はファイルを作成します。固有Ubuntu 16.04
2017

MacOSに関する情報はありますか?
エイドリアンフォルシウス2018

これは、dockerV17.xをインストールしたときに役立ちました。私はdocker.io V1.Xを持っていたとき、それは何とか仕事しませんでした
node_man

24

Windowsユーザーの場合

ここにローカルレジストリを追加して適用します。

ここに画像の説明を入力してください


7

Macユーザーの場合:トップバーの(docker)アイコンを使用してdocker設定を更新します

環境設定->デーモン->安全でないレジストリ[クリック(+)記号]->追加:ポート

下部にある[適用して再起動]ボタンをクリックします

Docker設定ウィンドウを示す写真


6

私も同じ問題を抱えており、以下の手順に従いました。

1.ファイルを作成します

 vi /etc/docker/daemon.json

2.以下のコンテンツを追加します

{
        "insecure-registries":["192.168.1.142:5000"]
 }

3.Dockerを再起動します

service docker restart

3

Windowsを使用していてこのエラーが発生した場合は、ここでファイルを作成する必要があります。 "C:\ProgramData\docker\config\daemon.json"

上記の@Bspecと同じことを行います。

{"insecure-registries":["myregistry.example.com:5000"]}

次に、PowerShellコマンドを使用してdockerを再起動します。

Stop-Service docker
Start-Service docker

2

「/etc/docker/daemon.json」を変更してもうまくいきませんでした。

以下のように「/ etc / sysconfig / docker」の下に置くとうまくいきました。

INSECURE_REGISTRY = "-insecure-registry 192.168.24.1:8787"


--insecure-registryオプションを表示していただきありがとうございます。私の場合、/etc/systemd/system/docker.service.d/docker-options.confKubesprayを使用しているため、別のファイルでした。したがって、他の人にとっては、DOCKER_OPTSパラメータを見つける必要があります。この検索を使用するだけです:ディレクトリgrep -ER DOCKER_OPTS /etc全体/etc。私の特定のケースでは、設定を効果的にするために、Ubuntuで次のことsystemctl daemon-reloadsystemctl restart docker行いps -ef | grep dockerdました。
ライミソン

1

ためにプッシュする、クライアント側では安全でないレジストリにIPを追加します(例:Windowsの場合)

ここに画像の説明を入力してください

プルするには、サーバー側(この場合はUbuntu)に追加します

vim /etc/docker/daemon.json

ここに画像の説明を入力してください

その後、Dockerを再起動します。


0

どのソリューションもUbuntu18.04で機能しなかったため、根本的な原因を見つけるために時間をかけてください。

問題を解決するための手順

sudo vi /lib/systemd/system/docker.service
# ExecStart=dockerd .... --insecure-registry=192.168.99.100:5000
sudo systemctl stop docker.service
sudo systemctl daemon-reload
sudo systemctl start docker.service

何が問題でしたか?

dockerdLinuxディストリビューションに関係なく、オプションが正確に構成されている場所を確認することをお勧めします。

sudo find /etc /lib -name 'docker*' | while read -r line; do grep dockerd $line /dev/null; done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.