Saya mencoba membuat registri Docker pribadi dengan mengikuti panduan ini. Saya telah mengunduh dan menandai gambar Ubuntu dan membuat wadah registri dan sekarang saya bermaksud untuk mendorongnya ke registri saya, tetapi ketika saya menelepon sudo docker push localhost:6000/Ubuntu
Saya mendapatkan output berikut:
The push refers to a repository [localhost:6000/ubuntu]Put http://localhost:6000/v1/repositories/ubuntu/: http: can't write HTTP request on broken connection
Yang dapat saya temukan adalah bahwa kesalahan "tidak dapat menulis permintaan HTTP" adalah kesalahan Go, tetapi sayangnya saya belum dapat menemukan apa pun yang terkait dengan bagaimana saya dapat menyelesaikannya di Docker. Saya juga mencoba menemukan log untuk perintah buruh pelabuhan sehingga saya dapat mencoba mendapatkan lebih banyak detail tentang masalah ini, tetapi sepertinya log hanya tersedia untuk wadah, dan saya tidak menjalankan ini di wadah.
Bagaimana Saya bisa menyelesaikan kesalahan ini?
Pembaruan
Saya baru saja menjalankan perintah lagi setelah tidak mengubah apa pun dan mendapat kesalahan yang berbeda:
Put http://localhost:6000/v1/repositories/ubuntu/: read tcp [::1]:33417->[::1]:6000: read: connection reset by peer
PEMBARUAN2
Dan lagi, berlari setelah mengubah apa-apa Dan sekarang mendapatkan:
Put http://localhost:6000/v1/repositories/ubuntu/: EOF
PEMBARUAN3
Setelah bermain-main sedikit, saya menemukan bahwa gambar yang saya coba dorong ke registri saya memang muncul di daftar gambar buruh pelabuhan saya, tetapi sepertinya saya tidak dapat menariknya.
PEMBARUAN4
Setelah bermain-main sedikit lagi, sepertinya port yang saya tetapkan ke registri pribadi saya hanya mendengarkan di IPV6, bukan IPV4. Menurut ini git thread, adalah normal bagi docker untuk tampak seperti hanya mendengarkan di IPV6, tetapi setelah dijalankan telnet localhost
, netstat -ntlp
, dan iptables -t nat -nxvL
, Saya masih tidak melihat indikasi bahwa ada sesuatu yang mendengarkan pada 127.0.0.1: 6000, yang merupakan port tempat registri saya (yang hanya berjalan sebagai wadah) harus ditetapkan. Sebaliknya, tampaknya mendengarkan pada::: 1: 6000.
Juga, karena diminta dan karena saya seharusnya mencantumkannya:
user@devstack01:~$ sudo docker versionClient: Version: 1.10.3 API version: 1.22 Go version: go1.5.3 Git commit: 20f81dd Built: Thu Mar 10 15:54:52 2016 OS/Arch: linux/amd64Server: Version: 1.10.3 API version: 1.22 Go version: go1.5.3 Git commit: 20f81dd Built: Thu Mar 10 15:54:52 2016 OS/Arch: linux/amd64
PEMBARUAN5
log kontainer registri:
time="2016-04-04T18:34:22Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="redis not configured" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="Starting upload purge in 58m0s" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T18:34:22Z" level=info msg="listening on [::]:5000" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-04T19:32:22Z" level=info msg="PurgeUploads starting: olderThan=2016-03-28 19:32:22.890256531 +0000 UTC, actuallyDelete=true"time="2016-04-04T19:32:22Z" level=info msg="Purge uploads finished. Num deleted=0, num errors=1"time="2016-04-04T19:32:22Z" level=info msg="Starting upload purge in 24h0m0s" go.version=go1.5.3 instance.id=25b8dd5a-f154-455b-84ad-3dd61ccf04e0 version=v2.3.1time="2016-04-05T13:54:59Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="redis not configured" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="Starting upload purge in 59m0s" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T13:54:59Z" level=info msg="listening on [::]:5000" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1time="2016-04-05T14:53:59Z" level=info msg="PurgeUploads starting: olderThan=2016-03-29 14:53:59.133142744 +0000 UTC, actuallyDelete=true"time="2016-04-05T14:53:59Z" level=info msg="Purge uploads finished. Num deleted=0, num errors=1"time="2016-04-05T14:53:59Z" level=info msg="Starting upload purge in 24h0m0s" go.version=go1.5.3 instance.id=90882341-a150-4384-9434-b091aacdd68b version=v2.3.1
Docker daemon debug log ketika saya mencoba untuk mendorong gambar ke registri saya:
DEBU[0037] Calling POST /v1.22/images/localhost:6000/hello-world/pushDEBU[0037] POST /v1.22/images/localhost:6000/hello-world/push?tag=DEBU[0037] Trying to push localhost:6000/hello-world to https://localhost:6000 v2DEBU[0037] Error getting v2 registry: Get https://localhost:6000/v2/: read tcp [::1]:33560->[::1]:6000: read: connection reset by peerDEBU[0037] Trying to push localhost:6000/hello-world to http://localhost:6000 v2DEBU[0037] Error getting v2 registry: Get http://localhost:6000/v2/: read tcp [::1]:33562->[::1]:6000: read: connection reset by peerDEBU[0037] Trying to push localhost:6000/hello-world to https://localhost:6000 v1DEBU[0037] attempting v2 ping for registry endpoint https://localhost:6000/v2/DEBU[0037] attempting v1 ping for registry endpoint https://localhost:6000/v1/DEBU[0037] Trying to push localhost:6000/hello-world to http://localhost:6000 v1DEBU[0037] Image list: [0xc820aa3840 0xc820704500]DEBU[0037] Tags by image: map[sha256:690ed74de00f99a7d00a98a5ad855ac4febd66412be132438f9b8dbd300a937d:[latest]]DEBU[0037] Pushing ID: b652ec3a27e758f30de4742156b5d096bb19c82f2dc836e96e430323ba166ffe with Tag:DEBU[0037] Pushing ID: 690ed74de00f99a7d00a98a5ad855ac4febd66412be132438f9b8dbd300a937d with Tag: latestDEBU[0037] [registry] PUT http://localhost:6000/v1/repositories/hello-world/DEBU[0037] Image list pushed to index:[{"id":"b652ec3a27e758f30de4742156b5d096bb19c82f2dc836e96e430323ba166ffe"},{"id":"690ed74de00f99a7d00a98a5ad855ac4febd66412be132438f9b8dbd300a937d","Tag":"latest"}]DEBU[0037] Not continuing with error: Put http://localhost:6000/v1/repositories/hello-world/: EOF
Log registri diakhiri dengan mengatakan bahwa terjadi kesalahan, tetapi dari sisa log saya tidak dapat benar-benar melihat apa kesalahan itu. Saya bahkan membagi log menjadi stdout dan stderr dan tidak ada yang ada di stderr.
Juga, saya telah mengkonfirmasi bahwa registri mendengarkan pada ipv4. Berlari nc -l -4 6000
pengembalian Address already in use
. Setidaknya, saya pikir saya sudah mengkonfirmasi hal itu. Alamat ipv4 masih tidak akan muncul dengan netstat
.
PEMBARUAN6
Secara eksplisit ditentukan port ipv4 dengan docker run -d -p 127.0.0.1:8000:8000
, port ini muncul sebagai mendengarkan di netstat. Masih mendapatkan kesalahan yang sama. Log Docker sedikit berbeda:
time="2016-04-07T15:19:31Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="redis not configured" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="Starting upload purge in 1m0s" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:19:31Z" level=info msg="listening on [::]:5000" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1time="2016-04-07T15:20:31Z" level=info msg="PurgeUploads starting: olderThan=2016-03-31 15:20:31.061864096 +0000 UTC, actuallyDelete=true"time="2016-04-07T15:20:31Z" level=info msg="Purge uploads finished. Num deleted=0, num errors=1"time="2016-04-07T15:20:31Z" level=info msg="Starting upload purge in 24h0m0s" go.version=go1.5.3 instance.id=6391e3dc-6644-4a45-8e8b-a08c8ff798a6 version=v2.3.1
Pesan" redis not configured " adalah satu-satunya hal yang sepertinya bisa menjadi masalah. Akan melihat ke dalamnya. Akan sangat, sangat menghargai wawasan tambahan.