-
Notifications
You must be signed in to change notification settings - Fork 122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP Proxy support is broken after upgrade to Version 17.12.0-ce-mac46 (21698) #2386
Comments
Thanks for your report. I've not been able to reproduce this myself yet, but I've found a bug which I suspect could be the cause of this-- in the proxy configuration code we conflated the settings for the HTTP and HTTPS proxies, leading to unexpected results in some environments. I've made a prototype fix. If you would like to try it I've made an experimental build: https://download-stage.docker.com/mac/pr/21758/Docker.dmg -- note this build is suitable for testing only. The build is version
If it offers an auto-update, don't accept it since it will probably update to another experimental build without the fix. If this doesn't work, could you let me know a little bit more about your proxies? Do you have different URLs for HTTP and HTTPS? |
Thanks, I will give it a try in a few minutes. I have the same URL for HTTP and HTTPS, I don't have a whole lot of details, I simply know it is a Bluecoat cluster that requires authentication and performs SSL Interception (DLP checks etc). This has been working for well over a year, just now, whatever the changes are seems to have affected it. Thanks for the quick reply. |
No joy :-(
The proxy works, I can pull things from the external registry, just not the internal one, seems it won't trust the internal CA even with its certificate being present on Keychain.
Which most certainly is completely different that the proxy configured on Preferences. |
DiagnosticID is 94B69674-4A18-4FC4-A9E4-2644691FA387 |
Thanks for giving it a go. I'll investigate more tomorrow. The |
This also affected me and some colleagues. We use the same proxy URL for HTTP and HTTPS. We use an external proxy, i.e. not one on the local Docker host...it seemed to only affect HTTPS URLs. What was weird is that it affected not only Docker daemon actions, like If I can provide any more info I will try but at this time I've rolled back to a previous version. I can re-upgrade cautiously :) |
We've fixed a couple of HTTP proxy issues and are hoping to release an update either later today or earlier tomorrow. I'll comment here when the update is available. Regarding in-container operations that have their own proxy configurations, Docker 17.07 and later have a new CLI feature: docker/cli#93 The file
These are automatically inserted by |
whoa that's big. lots of automation will get shelved now (in a good way) :) |
Sorry I should have emphasised -- we've fixed some proxy bugs for sure, but there might still be one or two left. In particular the original issue reported by @alvarow may not be fixed -- I'm still unable to reproduce it locally (for me using proxies to access a secure registry is working, unfortunately). The update will be worth re-testing, but we might need to release another update soon afterwards. Thanks for all your patience in the meantime! |
Thanks @djs55, please let me know if there's anything I can do to help. I am happy to demonstrate as well, over a BlueJeans/WebEx/etc session. |
I think I have the same issue. I am behind a proxy with SSL interception. Connecting to external registries (using the proxy) works. But I can not access the internal registry anymore. I think there is a problem with bypassing the proxy for internal domains. I just downgraded to 17.09.0-ce-mac33 (19543), now it works again. |
I tried the new Also proxy exclusion isn't working in the .domainname.net format (preferred) as well as hostname.domainname.net. I'm rolling back to 17.09 for now to fix. |
@danieladams456 thanks very much for the report and screenshot. I can reproduce these so I'll work on fixing them and adding some regression tests. |
When behind a corporate MITM transparent SSL proxy, and experiencing most of this issue, I found that running a local transparent SSL intercept Proxy for MacOS (which I'll refer to by its name, Charles) "fixed" it - so I just wanted to drop a line here in case the following observations help anyone else. From the time Docker.app launches to when the status bar Whale menu is clicked, it appears to connect to: api.wootric.com Exempting these domains from Charles intercept one-at-a-time (starting and stopping Docker.app to it whittle down), the connections that weren't be intercepted by Charles before leaving MacOS would connect normally - with the exception of cloud.docker.com and download.docker.com. Connections to those two domains would work via Charles, but log several of these events to the MacOS system Console before finally negotiating and connecting:
( Also noticed that cloud.docker.com and download.docker.com were both from different *.docker.com wildcard certs with slightly different subject alternative names, including an extra docker.io SAN on the cloud.docker.com cert... not a thing, I guess. Just interesting.) |
I've got an experimental build which addresses several issues in particular
I've tested the fixes end-to-end with various combinations of insecure registries, hub, DTR (with cert accepted via safari) with and without a proxy and with and without proxy authentication. Note that when I tested authenticated proxies I used the Whale menu -> Preferences -> Proxies -> Manual proxy configuration and typed in Urls of the form "http://username:password@host:port/". Unfortunately we can't currently use the username and password typed into the System Preferences proxy settings. If you'd like to try it the experimental build is here: https://download-stage.docker.com/mac/bysha1/2dde662345343861125e80c570b12c1a8c211dc8/Docker.dmg It should report version
It's a developer build from a PR based on the stable branch-- if it offers an auto-update, don't take it or you'll end up on another branch without the fixes. If it still doesn't work, please reproduce the problem and then upload a fresh diagnostic from the Whale menu -> Diagnose and Feedback ... -> Diagnose & Upload. I also fixed a bug where some of the networking logs are missing, so I'm keen to see any logs after new failures. Thanks for all your help so far and sorry for the inconvenience. |
Works! 🎉 |
Works here as well! 🎉 Tested with two associates plus mine. Just in case you were looking for something in particular, I have uploaded the Diagnostic logs as well. (unique id is: 94B69674-4A18-4FC4-A9E4-2644691FA387) Thanks for the help! Now... when can we expect a stable build with this fix? :-) |
The experimental build works, thanks. |
@djs55 can i close this ? |
Any official build with this fix? |
I haven't been upgrading because essentially, this bricked Docker at "work" for all development teams. I'd like to be confident it's in a regular upgrade channel if possible. Thanks for all your hard work on Docker all. |
I can confirm that this is now fixed in latest edge, Version 18.02.0-ce-mac53 (22617) c3ae48f0d5. |
I'll wait for confirmation of the official build before I tell the gang to move on. We're holding on 17.09 |
just tried but 18.02 does not fix it for us 😞. Holding on 17.09 for now.
|
The fix from the experimental build should be in the stable channel from
I'll tentatively close this ticket since the fix has been released. @alvarow let me know if it works / doesn't work for you. @lenguyenthedat I think you must have a different (although related) problem. Could you reproduce with the latest |
This is confirmed working on release mac55! Thanks so much @djs55 |
Closed issues are locked after 30 days of inactivity. If you have found a problem that seems similar to this, please open a new issue. Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows. |
Expected behavior
Docker pull from internal or external registries work through HTTP proxy that does SSL Interception.
Actual behavior
If the HTTP and HTTPS Proxy field are set on Docker Preferences, then the internal registry fails with
ERROR: Get https://dtr.cdl.es.ad.xxx.com/v2/: net/http: TLS handshake timeout
message, but works for external registries (i.e. AWS ECR or Docker Hub).If the HTTP Proxy preference is removed (but HTTPS is left) then the internal registry works (its SSL certificate is signed by the same internal CA that signs the SSL Intercepted requests through the proxy), but external registries fail to load with
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Information
Diagnostic ID 94B69674-4A18-4FC4-A9E4-2644691FA387
Steps to reproduce the behavior
The text was updated successfully, but these errors were encountered: