golang は linuxbrew (多分インストール処理としては go1.4 のバイナリを落としてきて 1.6 を build)
[mapk0y@kona:~]$ docker pull alpine:latest
latest: Pulling from library/alpine
420890c9e918: Pull complete
Digest: sha256:9cacb71397b640eca97488cf08582ae4e4068513101088e9f96c9814bfda95e0
Status: Downloaded newer image for alpine:latest
[mapk0y@kona:~]$ cd alpine-go-net-sample/
[mapk0y@kona:~/alpine-go-net-sample](master)$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.4 (jessie)
Release: 8.4
Codename: jessie
[mapk0y@kona:~/alpine-go-net-sample](master)$ go version
go version go1.6 linux/amd64
[mapk0y@kona:~/alpine-go-net-sample](master)$ CGO_ENABLED=0 go build -a -installsuffix cgo -o static_bin ./
[mapk0y@kona:~/alpine-go-net-sample](master)$ go build -a -o dynamic_bin ./
[mapk0y@kona:~/alpine-go-net-sample](master)$ ls -l *_bin
-rwxr-xr-x 1 mapk0y mapk0y 3574704 4月 22 02:03 dynamic_bin*
-rwxr-xr-x 1 mapk0y mapk0y 3526640 4月 22 02:02 static_bin*
[mapk0y@kona:~/alpine-go-net-sample](master)$ ldd *_bin
dynamic_bin:
linux-vdso.so.1 (0x00007ffdfb3be000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f364fafe000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f364f753000)
/lib64/ld-linux-x86-64.so.2 (0x00005610830f0000)
static_bin:
not a dynamic executable
[mapk0y@kona:~/alpine-go-net-sample](master)$ docker run -v ${PWD}:/work alpine:latest /work/dynamic_bin
docker: Error response from daemon: Container command '/work/dynamic_bin' not found or does not exist..
[mapk0y@kona:~/alpine-go-net-sample](master)$ docker run -v ${PWD}:/work alpine:latest /work/static_bin
HTTP/1.0 302 Found
バイナリの中身
[mapk0y@kona:~/alpine-go-net-sample](master)$ readelf -l dynamic_bin
Elf file type is EXEC (Executable file)
Entry point 0x45bea0
There are 10 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x0000000000000040 0x0000000000400040 0x0000000000400040
0x0000000000000230 0x0000000000000230 R 1000
INTERP 0x0000000000000fe4 0x0000000000400fe4 0x0000000000400fe4
0x000000000000001c 0x000000000000001c R 1
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
NOTE 0x0000000000000fac 0x0000000000400fac 0x0000000000400fac
0x0000000000000038 0x0000000000000038 R 4
LOAD 0x0000000000000000 0x0000000000400000 0x0000000000400000
0x000000000010dd10 0x000000000010dd10 R E 1000
LOAD 0x000000000010e000 0x000000000050e000 0x000000000050e000
0x0000000000136d08 0x0000000000136d08 R 1000
LOAD 0x0000000000245000 0x0000000000645000 0x0000000000645000
0x0000000000014380 0x00000000000340a0 RW 1000
DYNAMIC 0x0000000000245100 0x0000000000645100 0x0000000000645100
0x0000000000000130 0x0000000000000130 RW 8
TLS 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000008 R 8
GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 8
LOOS+5041580 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 8
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .note.go.buildid
03 .text .plt .interp .note.go.buildid
04 .rodata .typelink .gosymtab .gopclntab .rela .rela.plt .gnu.version .gnu.version_r .hash .shstrtab .dynstr .dynsym
05 .got.plt .dynamic .got .noptrdata .data .bss .noptrbss
06 .dynamic
07 .tbss
08
09
[mapk0y@kona:~/alpine-go-net-sample](master)$ docker run alpine:latest ls -l /lib64/ld-linux-x86-64.so.2
ls: /lib64/ld-linux-x86-64.so.2: No such file or directory
これがどうにか解決できても、musl libc は glibc と名前解決の扱いがちがう(dns search を見なかったり)ので static build が良いと思う