alpine-DNS-problem
Many softwares use alpine
as their run-time base image.
Recently I set up a docker registry with portus
as its front. But I came up with a problem that, registry won’t post
date: 2017-12-06
title: alpine-DNS-problem
Firstly I thought it was a bug of docker resigtry, but as I’m digging into its code, I found that it’s actruely a bug of alpine linux. Alpine linux doesn’t have an /etc/nsswitch.conf
config file.
So, I have to add an extra config file to alpine.
hosts: files dns
Mount your host OS’ /etc/nsswitch.conf
to the container or build a new alpine image with this config file in it:
FROM alpine:latest
RUN echo "hosts: files dns" > /etc/nsswitch.conf
... other parts...
Wiki of nsswitch.conf: man nsswitch.conf
Tools I used to dig the bug:
-
ngrep
:sudo ngrep -q kfd.me
-
golang:alpine
:docker run --rm -ti -v $(pwd):/go golang:alpine go run /go/main.go
-
docker
:docker run --rm -ti alpine nc -lkp 8083
-
nc
:nc -lkp 8083
-
dnsmasq
: local DNS server -
the best IDE of the whole universe: VS Code
-
main.go
:
package main
import (
"net/http"
)
func main() {
c := http.DefaultClient
resp, err := c.Post("http://kfd.me:8083", "X", nil)
if err != nil {
panic(err)
}
panic(resp.Status)
}