Comments (28)
@tianon re jpetazzo/docker-busybox#19
from busybox.
I swear that at some point, :latest
was -> :glibc
because we had images built from that that showed a 2 MB base.
from busybox.
It looks like buildroot will pull http://downloads.uclibc-ng.org/releases/1.0.9/ which should be 6. I have to disappear for a while - anything you can find will be appreciated.
from busybox.
https://github.com/docker-library/official-images/commits/master/library/busybox is the history for when this image has been updated
:latest
has been based on uClibc directly since docker-library/official-images@ab7d119, but was actually just a packaged version of buildroot itself before that, so it's been based on uClibc for a long time 😢
from busybox.
I'm going to go re-build the latest image on the official build server just to make sure we didn't somehow get a tag crossed or mis-built (since that does happen occasionally).
from busybox.
I SWEAR this used to work. Can we point :latest at :glibc, since it is the only one that actually seems to work?
from busybox.
The glibc
variant is dynamically compiled with Debian's glibc embedded directly, so it's not a faithful representation of the spirit of "just busybox" as an image, and I'm really keen on figuring out what happened here and fixing it (especially since the :latest
variant has been based on uClibc/buildroot since May 22, 2014; docker-library/official-images@164f4f7).
I'm going to spend some time working on reproducing this to see if I can figure out what's going on. In the meantime, I'd honestly recommend not to use the bare :latest
tag anywhere that explicit features or shortcomings in the libc implementation are potentially show-stopping.
from busybox.
yeah, it was reported by someone, so "don't use it" is not a viable answer. :) I'm kicking off a build of busybox, too. Watch this space.
from busybox.
Oh yeah, I agree -- that'd be my suggestion, not trying to deflect. 😄 ❤️ I'm definitely keen on figuring out WTF is happening.
Is there an easy way to reproduce this publicly without using internal DNS servers? 😄 (I'm working on doing so, but if you've got a quick and easy one-liner or something that'd be helpful 😄)
from busybox.
You should just need a DNS server that you know will do a short-name resolution, and then put it at the end of your 4 dns-search flags.
from busybox.
Perfect, got it:
tianon@biers:~$ docker run --dns-search=f1 --dns-search=f2 --dns-search=f3 --dns-search=f4 --dns-search=google.com busybox:uclibc nslookup www
Server: 172.18.42.1
Address 1: 172.18.42.1
nslookup: can't resolve 'www'
tianon@biers:~$ docker run --dns-search=f1 --dns-search=f2 --dns-search=f3 --dns-search=google.com busybox:uclibc nslookup www
Server: 172.18.42.1
Address 1: 172.18.42.1
nslookup: can't resolve 'www'
tianon@biers:~$ docker run --dns-search=f1 --dns-search=f2 --dns-search=google.com busybox:uclibc nslookup www
Server: 172.18.42.1
Address 1: 172.18.42.1
Name: www
Address 1: 2607:f8b0:4007:809::2004 lax02s21-in-x04.1e100.net
Address 2: 216.58.216.4 lax02s21-in-f4.1e100.net
Now to dig in. 😞
from busybox.
LOL, that is exactly what was going to send you
from busybox.
🤘 ❤️
from busybox.
Looks like buildroot is actually bringing in uClibc-ng, which is giving us http://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/include/resolv.h#n91 (3). This isn't a new problem per-se, but it is definitely a problem, looking into what we can do at the buildroot level before I resort to hacking that value (and looking for uclibc-ng upstream bugs about this).
from busybox.
Oh no, I was looking at the wrong number; http://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/include/resolv.h#n93 is correct, which is 6.
from busybox.
http://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/include/resolv.h#n93 is the relevant line
from busybox.
I cloned the correct version of buildroot and ran make uclibc-patch
in it after setting up the config, and I confirmed that output/build/uclibc-1.0.9/include/resolv.h
has the correct value too. 😱 😞
from busybox.
Even going directly into the completed build container for busybox itself:
$ docker run -it --rm busybox:uclibc-builder
root@260a23b1d4ff:/usr/src/busybox# grep MAXDNSRCH ../buildroot/output/build/uclibc-1.0.9/include/resolv.h
# define MAXDNSRCH 6 /* max # domains in search path */
char *dnsrch[MAXDNSRCH + 1]; /* components of domain to search */
from busybox.
And yet:
$ docker run -it --rm --dns-search=f1 --dns-search=f2 --dns-search=f3 --dns-search=f4 --dns-search=google.com busybox:uclibc-builder
root@6308be122ffe:/usr/src/busybox# ./busybox nslookup www
Server: 172.18.42.1
Address 1: 172.18.42.1
nslookup: can't resolve 'www'
from busybox.
I don't think this has worked on :latest
since 2014 (the update I referenced earlier) -- the old latest
(before this repo's refactor) was also tagged as :buildroot-2014.02
which is still available and which I just tested:
tianon@biers:~$ docker run --dns-search=f1 --dns-search=f2 --dns-search=f3 --dns-search=f4 --dns-search=google.com busybox:buildroot-2014.02 nslookup www
Server: 172.18.42.1
Address 1: 172.18.42.1
nslookup: can't resolve 'www'
from busybox.
Testing the oldest digest I can find for busybox:latest
(busybox@sha256:c451012efb6e79b9cf93f48a326a195acfcdf01cadf4271d678d03e031c214d3
) isn't quite old enough, but it's interesting anyhow:
tianon@biers:~$ docker run --dns-search=f1 --dns-search=f2 --dns-search=f3 --dns-search=f4 --dns-search=google.com busybox@sha256:c451012efb6e79b9cf93f48a326a195acfcdf01cadf4271d678d03e031c214d3 nslookup www
Server: 172.18.42.1
Address 1: 172.18.42.1
nslookup: can't resolve 'www'
(found the digest via docker-library/docs@56ccc70#diff-9b603735f24f234123ee1abfb20b099bR115; Sep 18, 2015)
from busybox.
I (hackily) instrumented uclibc to printf stuff while iterating search domains; but now it works. Trying a more hermetic build, but the way this builder runs I am having a hard time applying a patch to uclibc as part of the dockerfile.
from busybox.
it's a bug in uclibc. You're right that it never could have worked. The bug is that it decrements the retry count on search-path misses in addition to server failures.
from busybox.
Ouch, is there a tracker for upstream you can submit it to? (and a link we can follow along with? 😄)
from busybox.
I sent a patch to their mailing list
from busybox.
http://mailman.uclibc-ng.org/pipermail/devel/2016-February/000775.html
from busybox.
from busybox.
FYI, this has unfortunately regressed again; tracking here in #48 and upstream in https://bugs.busybox.net/show_bug.cgi?id=11161.
from busybox.
Related Issues (20)
- GNOME HIG.gpl.txt
- nc: bad port spec 'local:/...' HOT 4
- ping: bad address, Running in k8s. HOT 3
- busybox 1.34.1 exited in arm64 with code 139 HOT 5
- busybox
- The latest busybox becomes compiled dynamic? HOT 12
- Symlink /usr/bin to /bin HOT 1
- wget Connection reset by peer HOT 12
- BR2_cortex_a15 support available? HOT 1
- Can this docker with glibc support Dynamic linked binaries/ELF. HOT 3
- busybox 1.36 sha256sum crashes with Illegal instruction (SIGILL) on amd64 HOT 3
- busybox doesn't support bash HOT 1
- :confused: `busybox` is just a collection of tools, so depending on what you are running it may or may not respond to a `SIGTERM`. There isn't anything we could do in the image for that.
- Consider single (standalone) applets variants HOT 2
- How to use with an SPA HOT 3
- Zip utility in Busybox HOT 1
- confused by for loop HOT 5
- How to Set System Locales in busybox docker image? HOT 3
- busybox 1.36.1 may have been built with an older version of build tool HOT 2
- Manifest issues for 7 architectures on versions 1.35 and 1.36 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from busybox.