2017-02-27 60 views
1

將Artifactory用作Docker註冊表時,通過摘要執行Docker pull操作失敗,並返回Error response from daemon: received unexpected HTTP status: 500 Internal Server Error通過摘要執行Docker pull操作不起作用Docker 1.13.1和Artifactory 5.0.1

如果使用latest標記,則問題會導致docker服務創建操作失敗。我一直使用Artifactory作爲Docker註冊表大約9個月沒有問題。在將Docker升級到版本1.13.0(以及後來的版本1.13.1)後,我開始在創建服務時使用標記latest或沒有標記來獲取No such image: ...錯誤。 Artifactory日誌顯示,從latest圖像創建碼頭服務時,通過摘要進行拉取。升級到最新版本的Artifactory(5.0.1)沒有奏效。

我發現關於該問題的懸而未決的問題:https://www.jfrog.com/jira/browse/RTFACT-10543

通過消化拉圖像可能不是一個受歡迎的操作,但是從latest圖像搬運工服務的創建應該是很常見的做法。有趣的是,關於這個問題存在一些抱怨。這就是爲什麼我開始考慮問題是否與我的Artifactory配置有關。

從DockerHub泊塢窗拉 - 工程

[[email protected] ~]$ docker pull busybox 
Using default tag: latest 
latest: Pulling from library/busybox 
4b0bc1c4050b: Pull complete 
Digest: sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e 
Status: Downloaded newer image for busybox:latest 

泊塢拉由DockerHub消化 - 工程

[[email protected] ~]$ docker pull [email protected]:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e 
sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e: Pulling from library/busybox 
4b0bc1c4050b: Pull complete 
Digest: sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e 
Status: Downloaded newer image for [email protected]:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e 

碼頭工人從Artifactory的拉 - 工程

[[email protected] ~]$ docker pull artifactory.mycompany.com/busybox 
Using default tag: latest 
latest: Pulling from busybox 
4b0bc1c4050b: Pull complete 
Digest: sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e 
Status: Downloaded newer image for artifactory.mycompany.com/busybox:latest 

阿帕奇 - 訪問日誌

10.74.200.56 - - [27/Feb/2017:09:51:27 +0300] "GET /v2/ HTTP/1.1" 401 77 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 
10.74.200.56 - - [27/Feb/2017:09:51:27 +0300] "GET /artifactory/api/docker/docker/v2/token?account=akumlali&scope=repository%3Abusybox%3Apull&service=artifactory.mycompany.com HTTP/1.1" 200 103 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 
10.74.200.56 - - [27/Feb/2017:09:51:32 +0300] "GET /v2/busybox/manifests/latest HTTP/1.1" 200 527 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 
10.74.200.56 - - [27/Feb/2017:09:51:35 +0300] "GET /v2/busybox/blobs/sha256:7968321274dc6b6171697c33df7815310468e694ac5be0ec03ff053bb135e768 HTTP/1.1" 200 1465 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 
10.74.200.56 - - [27/Feb/2017:09:51:35 +0300] "GET /v2/busybox/blobs/sha256:4b0bc1c4050b03c95ef2a8e36e25feac42fd31283e8c30b3ee5df6b043155d3c HTTP/1.1" 200 677628 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 

Artifactory的 - artifactory.log

2017-02-27 09:51:32,352 [http-nio-8081-exec-46] [INFO ] (o.a.a.d.r.v.r.v.DockerV2VirtualRepoHandler:105) - Fetching docker manifest for repo 'busybox' and tag 'latest' 
2017-02-27 09:51:35,684 [http-nio-8081-exec-46] [INFO ] (o.a.r.HttpRepo  :420) - registry-1.docker.io downloading https://registry-1.docker.io/v2/library/busybox/manifests/latest 527 bytes 
2017-02-27 09:51:35,691 [http-nio-8081-exec-46] [INFO ] (o.a.r.HttpRepo  :433) - registry-1.docker.io downloaded https://registry-1.docker.io/v2/library/busybox/manifests/latest 527 bytes at 89.81 KB/sec 
2017-02-27 09:51:35,712 [http-nio-8081-exec-44] [INFO ] (o.j.r.d.v.r.h.DockerV2LocalRepoHandler:103) - Fetching docker blob 'sha256:7968321274dc6b6171697c33df7815310468e694ac5be0ec03ff053bb135e768' from repo 'docker-local2' 
2017-02-27 09:51:35,712 [http-nio-8081-exec-9] [INFO ] (o.j.r.d.v.r.h.DockerV2LocalRepoHandler:103) - Fetching docker blob 'sha256:4b0bc1c4050b03c95ef2a8e36e25feac42fd31283e8c30b3ee5df6b043155d3c' from repo 'docker-local2' 
2017-02-27 09:51:35,728 [http-nio-8081-exec-9] [INFO ] (o.a.a.d.r.v.DockerV2RemoteRepoHandler:133) - Fetching docker blob 'sha256:4b0bc1c4050b03c95ef2a8e36e25feac42fd31283e8c30b3ee5df6b043155d3c' 
2017-02-27 09:51:35,728 [http-nio-8081-exec-44] [INFO ] (o.a.a.d.r.v.DockerV2RemoteRepoHandler:133) - Fetching docker blob 'sha256:7968321274dc6b6171697c33df7815310468e694ac5be0ec03ff053bb135e768' 

碼頭工人從Artifactory的拉通過消化 - 不行!

[[email protected] ~]$ docker pull artifactory.mycompany.com/[email protected]:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e 
Error response from daemon: received unexpected HTTP status: 500 Internal Server Error 

阿帕奇 - 訪問日誌

10.74.200.56 - - [27/Feb/2017:09:52:13 +0300] "GET /v2/ HTTP/1.1" 401 77 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 
10.74.200.56 - - [27/Feb/2017:09:52:13 +0300] "GET /artifactory/api/docker/docker/v2/token?account=akumlali&scope=repository%3Abusybox%3Apull&service=artifactory.mycompany.com HTTP/1.1" 200 103 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 
10.74.200.56 - - [27/Feb/2017:09:52:13 +0300] "GET /v2/busybox/manifests/sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e HTTP/1.1" 500 149 "-" "docker/1.13.1 go/go1.7.5 git-commit/092cba3 kernel/3.10.0-514.6.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.13.1 \\(linux\\))" 

Artifactory的 - artifactory.log

2017-02-27 09:52:13,232 [http-nio-8081-exec-48] [INFO ] (o.a.a.d.r.v.r.v.DockerV2VirtualRepoHandler:105) - Fetching docker manifest for repo 'busybox' and tag 'sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e' 
2017-02-27 09:52:13,233 [http-nio-8081-exec-48] [INFO ] (o.j.r.d.v.r.h.DockerV2LocalRepoHandler:533) - Fetching docker manifest for repo 'busybox' and digest 'sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e' in repo 'docker-local2' 
2017-02-27 09:52:13,237 [http-nio-8081-exec-48] [ERROR] (o.a.r.c.e.GlobalExceptionMapper:48) - null 
java.lang.NullPointerException: null 

更新1:

我升級到多克的最新版本(17.03.0 -ce)和Artifactory(5.1.0),但沒有運氣。

泊塢版

[[email protected] myuser]$ sudo docker info 
Containers: 0 
Running: 0 
Paused: 0 
Stopped: 0 
Images: 1 
Server Version: 17.03.0-ce 
Storage Driver: devicemapper 
Pool Name: docker-253:3-33595530-pool 
Pool Blocksize: 65.54 kB 
Base Device Size: 10.74 GB 
Backing Filesystem: xfs 
Data file: /dev/loop0 
Metadata file: /dev/loop1 
Data Space Used: 16.91 MB 
Data Space Total: 107.4 GB 
Data Space Available: 9.287 GB 
Metadata Space Used: 585.7 kB 
Metadata Space Total: 2.147 GB 
Metadata Space Available: 2.147 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: bridge host macvlan null overlay 
Swarm: inactive 
Runtimes: runc 
Default Runtime: runc 
Init Binary: docker-init 
containerd version: 977c511eda0925a723debdc94d09459af49d082a 
runc version: a01dafd48bc1c7cc12bdb01206f9fea7dd6feb70 
init version: 949e6fa 
Security Options: 
seccomp 
    Profile: default 
Kernel Version: 3.10.0-327.36.1.el7.x86_64 
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo) 
OSType: linux 
Architecture: x86_64 
CPUs: 8 
Total Memory: 15.51 GiB 
Name: rose3 
ID: 3P6Q:V4IC:C4RZ:MIZP:WT2R:PW4H:QSZC:G3MU:KUEY:3HSM:FX3U:TDO6 
Docker Root Dir: /var/lib/docker 
Debug Mode (client): false 
Debug Mode (server): false 
Registry: https://index.docker.io/v1/ 
WARNING: bridge-nf-call-iptables is disabled 
WARNING: bridge-nf-call-ip6tables is disabled 
Experimental: false 
Insecure Registries: 
127.0.0.0/8 
Live Restore Enabled: false 

阿帕奇 - 訪問日誌

10.74.200.64 - - [03/Mar/2017:14:07:59 +0300] "GET /api/docker/docker/v2/ HTTP/1.1" 401 77 "-" "docker/17.03.0-ce go/go1.7.5 git-commit/60ccb22 kernel/3.10.0-327.36.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/17.03.0-ce \\(linux\\))" 
10.74.200.64 - - [03/Mar/2017:14:07:59 +0300] "GET /v2/ HTTP/1.1" 401 77 "-" "docker/17.03.0-ce go/go1.7.5 git-commit/60ccb22 kernel/3.10.0-327.36.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/17.03.0-ce \\(linux\\))" 
10.74.200.64 - - [03/Mar/2017:14:07:59 +0300] "GET /api/docker/docker/v2/token?scope=repository%3Abusybox%3Apull&service=artifactory.mycompany.com%3A443 HTTP/1.1" 200 103 "-" "docker/17.03.0-ce go/go1.7.5 git-commit/60ccb22 kernel/3.10.0-327.36.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/17.03.0-ce \\(linux\\))" 
10.74.200.64 - - [03/Mar/2017:14:07:59 +0300] "GET /api/docker/docker/v2/busybox/manifests/sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e HTTP/1.1" 500 149 "-" "docker/17.03.0-ce go/go1.7.5 git-commit/60ccb22 kernel/3.10.0-327.36.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/17.03.0-ce \\(linux\\))" 
10.74.200.64 - - [03/Mar/2017:14:07:59 +0300] "GET /v2/busybox/manifests/sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e HTTP/1.1" 500 149 "-" "docker/17.03.0-ce go/go1.7.5 git-commit/60ccb22 kernel/3.10.0-327.36.1.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/17.03.0-ce \\(linux\\))" 

Artifactory的 - artifactory.log

2017-03-03 13:56:28,267 [http-nio-8081-exec-9] [INFO ] (o.a.a.d.r.v.r.v.DockerV2VirtualRepoHandler:105) - Fetching docker manifest for repo 'busybox' and tag 'sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e' 
2017-03-03 13:56:28,268 [http-nio-8081-exec-9] [INFO ] (o.j.r.d.v.r.h.DockerV2LocalRepoHandler:533) - Fetching docker manifest for repo 'busybox' and digest 'sha256:817a12c32a39bbe394944ba49de563e085f1d3c5266eb8e9723256bc4448680e' in repo 'docker-local' 
2017-03-03 13:56:28,269 [http-nio-8081-exec-9] [ERROR] (o.a.r.c.e.GlobalExceptionMapper:48) - null 
java.lang.NullPointerException: null 
     at org.artifactory.addon.docker.rest.v2.repo.virtual.DockerV2VirtualRepoHandler.execute(DockerV2VirtualRepoHandler.java:178) ~[artifactory-addon-docker-5.1.0.jar:na] 
     at org.artifactory.addon.docker.rest.v2.repo.virtual.DockerV2VirtualRepoHandler.getManifest(DockerV2VirtualRepoHandler.java:106) ~[artifactory-addon-docker-5.1.0.jar:na] 
     at org.jfrog.repomd.docker.v2.rest.DockerV2Resource.getManifest(DockerV2Resource.java:81) ~[docker-4.3.21.jar:na] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121] 
     at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) ~[jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) [jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) [jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) [jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) [jersey-server-1.19.jar:1.19] 
     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) [jersey-servlet-1.19.jar:1.19] 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) [jersey-servlet-1.19.jar:1.19] 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) [jersey-servlet-1.19.jar:1.19] 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [servlet-api.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [catalina.jar:8.0.39] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.39] 
     at org.artifactory.webapp.servlet.RepoFilter.execute(RepoFilter.java:185) [artifactory-web-application-5.1.0.jar:na] 
     at org.artifactory.webapp.servlet.RepoFilter.doFilter(RepoFilter.java:94) [artifactory-web-application-5.1.0.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.39] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.39] 
     at org.artifactory.webapp.servlet.authentication.ArtifactoryAuthenticationFilterChain.lambda$1(ArtifactoryAuthenticationFilterChain.java:136) [artifactory-web-application-5.1.0.jar:na] 
     at org.artifactory.webapp.servlet.authentication.PropsAuthenticationFilter.doFilter(PropsAuthenticationFilter.java:131) ~[artifactory-web-application-5.1.0.jar:na] 
     at org.artifactory.webapp.servlet.authentication.ArtifactoryAuthenticationFilterChain.doFilter(ArtifactoryAuthenticationFilterChain.java:172) [artifactory-web-application-5.1.0.jar:na] 
     at org.artifactory.webapp.servlet.AccessFilter.authenticateAndExecute(AccessFilter.java:281) ~[artifactory-web-application-5.1.0.jar:na] 
     at org.artifactory.webapp.servlet.AccessFilter.doFilterInternal(AccessFilter.java:205) ~[artifactory-web-application-5.1.0.jar:na] 
     at org.artifactory.webapp.servlet.AccessFilter.doFilter(AccessFilter.java:165) ~[artifactory-web-application-5.1.0.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.39] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.39] 
     at org.artifactory.webapp.servlet.RequestFilter.doFilter(RequestFilter.java:67) ~[artifactory-web-application-5.1.0.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.39] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.39] 
     at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:164) ~[spring-session-1.2.2.RELEASE.jar:na] 
     at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80) ~[spring-session-1.2.2.RELEASE.jar:na] 
     at org.artifactory.webapp.servlet.SessionFilter.doFilter(SessionFilter.java:62) ~[artifactory-web-application-5.1.0.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.39] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.39] 
     at org.artifactory.webapp.servlet.ArtifactoryFilter.doFilter(ArtifactoryFilter.java:116) ~[artifactory-web-application-5.1.0.jar:na] 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.39] 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.39] 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) ~[catalina.jar:8.0.39] 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) ~[catalina.jar:8.0.39] 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) ~[catalina.jar:8.0.39] 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) ~[catalina.jar:8.0.39] 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) ~[catalina.jar:8.0.39] 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509) ~[catalina.jar:8.0.39] 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104) ~[tomcat-coyote.jar:8.0.39] 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) ~[tomcat-coyote.jar:8.0.39] 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) ~[tomcat-coyote.jar:8.0.39] 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) ~[tomcat-coyote.jar:8.0.39] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_121] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_121] 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:8.0.39] 
     at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_121] 

UPDATE 2

Artifactory 5.1.2仍存在問題。

更新3

看來,Artifactory的不處理泊塢窗,關於圖像標籤最近的變化。簡單地說:

  • docker service create ...拉動圖像通過消化(FOO @ SHA256:aabbff11)
  • 當通過摘要拉動的圖像(FOO @ SHA256:aabbff11),沒有創建標籤,因爲相同摘要可以共享通過不同的標籤。
  • Artifactory需要一個標籤並引發NPE,同時通過摘要創建服務或拉取圖像。

有在泊塢社區積極討論:

以下是表明docker run --name=busybox busybox:1.26.2 sleep 60創建標籤1.26.2簡單的測試用例,而docker service create --name=busybox busybox:1.26.2 sleep 60沒有。此外,測試案例顯示Artifactory不處理標籤爲<none>的情況。

案例1

[[email protected] ~]$ docker run --name=busybox busybox:1.26.2 sleep 60 
Unable to find image 'busybox:1.26.2' locally 
1.26.2: Pulling from library/busybox 
7520415ce762: Pull complete 
Digest: sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f 
Status: Downloaded newer image for busybox:1.26.2 

[[email protected] ~]$ docker images busybox 
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
busybox    1.26.2    00f017a8c2a6  4 days ago   1.11 MB 

案例2

[[email protected] ~]$ docker run --name=busybox artifactory.mycompany.com/busybox:1.26.2 sleep 60 
Unable to find image 'artifactory.mycompany.com/busybox:1.26.2' locally 
1.26.2: Pulling from busybox 
7520415ce762: Pull complete 
Digest: sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f 
Status: Downloaded newer image for artifactory.mycompany.com/busybox:1.26.2 

[[email protected] ~]$ docker images artifactory.mycompany.com/busybox 
REPOSITORY    TAG     IMAGE ID   CREATED    SIZE 
artifactory.mycompany.com/busybox 1.26.2    00f017a8c2a6  4 days ago   1.11 MB 

案例3

[[email protected] ~]$ docker service create --name=busybox busybox:1.26.2 sleep 60 
9wi3h70is2p64andg943jihf8 

[[email protected] ~]$ docker service ps busybox 
ID   NAME  IMAGE   NODE  DESIRED STATE CURRENT STATE   ERROR PORTS 
vhqgxhcrpesu busybox.1 busybox:1.26.2 rose3 Running  Running 1 second ago 

[[email protected] ~]$ docker images busybox 
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
busybox    <none>    00f017a8c2a6  4 days ago   1.11 MB 

案例4

[[email protected] ~]$ docker service create --name=busybox artifactory.mycompany.com/busybox:1.26.2 sleep 60 
phzmsqktm9ybt6fzs4d5mrd8e 

[[email protected] ~]$ docker service ps busybox 
ID   NAME   IMAGE       NODE  DESIRED STATE CURRENT STATE   ERROR        PORTS 
sppf72atj1z9 busybox.1  artifactory.mycompany.com/busybox:1.26.2 rose3 Ready   Rejected 2 seconds ago "No such image: artifactory.my…" 
txq73aq1r06g \_ busybox.1 artifactory.mycompany.com/busybox:1.26.2 rose3 Shutdown  Rejected 7 seconds ago "No such image: artifactory.my…" 
f9c9evp74059 \_ busybox.1 artifactory.mycompany.com/busybox:1.26.2 rose3 Shutdown  Rejected 12 seconds ago "No such image: artifactory.my…" 
jb16jyorggeb \_ busybox.1 artifactory.mycompany.com/busybox:1.26.2 rose3 Shutdown  Rejected 12 seconds ago "No such image: artifactory.my…" 
[[email protected] ~]$ 

[[email protected] ~]$ docker inspect sppf72atj1z9 
[ 
    { 
     "ID": "sppf72atj1z9xpgarj9jp6yw8", 
     "Version": { 
      "Index": 779121 
     }, 
     "CreatedAt": "2017-03-14T11:52:36.347033515Z", 
     "UpdatedAt": "2017-03-14T11:52:41.585341679Z", 
     "Spec": { 
      "ContainerSpec": { 
       "Image": "artifactory.mycompany.com/busybox:[email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f", 
       "Args": [ 
        "sleep", 
        "60" 
       ], 
       "DNSConfig": {} 
      }, 
      "Resources": { 
       "Limits": {}, 
       "Reservations": {} 
      }, 
      "RestartPolicy": { 
       "Condition": "any", 
       "MaxAttempts": 0 
      }, 
      "Placement": {}, 
      "ForceUpdate": 0 
     }, 
     "ServiceID": "phzmsqktm9ybt6fzs4d5mrd8e", 
     "Slot": 1, 
     "NodeID": "rdg9afjb1ghmgw6rdgfrw7dq3", 
     "Status": { 
      "Timestamp": "2017-03-14T11:52:36.667378877Z", 
      "State": "rejected", 
      "Message": "preparing", 
      "Err": "No such image: artifactory.mycompany.com/[email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f", 
      "ContainerStatus": {}, 
      "PortStatus": {} 
     }, 
     "DesiredState": "shutdown" 
    } 
] 

案例5

[[email protected] ~]$ docker run --name=busybox [email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f sleep 60 
Unable to find image '[email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f' locally 
sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f: Pulling from library/busybox 
7520415ce762: Pull complete 
Digest: sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f 
Status: Downloaded newer image for [email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f 

[[email protected] ~]$ docker images busybox 
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
busybox    <none>    00f017a8c2a6  4 days ago   1.11 MB 

案例6

[[email protected] ~]$ docker run --name=busybox artifactory.mycompany.com/[email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f sleep 60 
Unable to find image 'artifactory.mycompany.com/[email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f' locally 
docker: Error response from daemon: received unexpected HTTP status: 500 Internal Server Error. 
See 'docker run --help'. 
[[email protected] ~]$ 

artifactory.log

2017-03-14 14:50:04,388 [http-nio-8081-exec-114] [INFO ] (o.a.a.d.r.v.r.v.DockerV2VirtualRepoHandler:105) - Fetching docker manifest for repo 'busybox' and tag 'sha256:32f093055929dbc23dec4d03e09dfe971f5 
973a9ca5cf059cbfb644c206aa83f' 
2017-03-14 14:50:04,388 [http-nio-8081-exec-114] [INFO ] (o.j.r.d.v.r.h.DockerV2LocalRepoHandler:533) - Fetching docker manifest for repo 'busybox' and digest 'sha256:32f093055929dbc23dec4d03e09dfe971f59 
73a9ca5cf059cbfb644c206aa83f' in repo 'docker-local2' 
2017-03-14 14:50:04,402 [http-nio-8081-exec-114] [ERROR] (o.a.r.c.e.GlobalExceptionMapper:48) - null 
java.lang.NullPointerException: null 
     at org.artifactory.addon.docker.rest.v2.repo.virtual.DockerV2VirtualRepoHandler.execute(DockerV2VirtualRepoHandler.java:178) ~[artifactory-addon-docker-5.1.2.jar:na] 
     at org.artifactory.addon.docker.rest.v2.repo.virtual.DockerV2VirtualRepoHandler.getManifest(DockerV2VirtualRepoHandler.java:106) ~[artifactory-addon-docker-5.1.2.jar:na] 
     at org.jfrog.repomd.docker.v2.rest.DockerV2Resource.getManifest(DockerV2Resource.java:81) ~[docker-4.3.21.jar:na] 

UPDATE 4:

RTFACT-10543固定Artifactory的5.2.1版本。我確認Artifactory現在很樂意處理空標籤。

[[email protected] ~]$ docker pull artifactory.mycompany.com/[email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f 
sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f: Pulling from busybox 
7520415ce762: Pull complete 
Digest: sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f 
Status: Downloaded newer image for artifactory.mycompany.com/[email protected]:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f 

服務創建的問題也得到了解決此修復程序:https://github.com/moby/moby/issues/28908

回答

2

看起來你確實面臨你提到的問題:RTFACT-10543
正如您在JIRA問題中所看到的那樣,此問題仍然存在(在撰寫此答案時)。 如果你想推廣它,我建議你對它進行投票。

HTH,
Yinon
我與JFrog,背後

+0

謝謝您的回答了公司,但我不能投票,因爲我們有專業執照是不夠的,對JFrog的賬戶JIRA。 –

+0

看來我的最後一條評論是無效的。在我們更新許可證的同時,我們向JFrog詢問了爲什麼我們不允許擁有JIRA帳戶。他們向我們發送以下評論:「我們的所有客戶都可以報告錯誤/ FR,無論他們擁有哪個訂閱。有一個選項可以向我們的公共JIRA提交您的請求(只需註冊)。」我們在https://www.jfrog.com/jira申請了一個帳戶,現在我們可以訪問JFrog的公共JIRA。 –