https://github.com/gliderlabs/docker-alpine/issues/334

[Temporary error (try again later) · Issue #334 · gliderlabs/docker-alpine

I run into this issue when building a docker image on Ubuntu Host. The Same build on Windows 10 using docker-tools CLI (so technically inside a VirtualBox VM) has no issues and Docker images are bu...

github.com](https://github.com/gliderlabs/docker-alpine/issues/334)

위 링크에 따르면 컨테이너가 바라보고 있는 DNS의 이슈다. 보통 컨테이너 내부에서 외부 이더넷과 연결이 되어있는지를 확인하기 위해 구글의 오픈 DNS인 8.8.8.8, 8.8.4.4(혹은 google.com)로 핑을 날려보게 되는데, 외부 이더넷과 연결되어있지 않으면 apk update로 index 파일에서 패키지 리스트를 갱신해올 때 (temporary error)라고 뜨면서 리스트를 받아오지 못한다.

호스트 컴퓨터에서는 정상적으로 가동하는 ping google.com이 컨테이너 내부에서만 수행되지 않는다면 도커 데몬이 구글, KT, SKT등 DNS를 제공하는 업체의 오픈 DNS가 아닌, 다른 DNS를 바라보고 있는 것이다.

root@dev-server:/home/dev# ps -ef|grep docker
root         761       1  0 10월06 ?      00:06:25 /usr/bin/dockerd --iptables=false --exec-opt native.cgroupdriver=systemd --data-root=/var/lib/docker --log-opt max-size=50m --log-opt max-file=5 --dns 10.233.0.3 --dns 127.0.0.53 --dns-search default.svc.cluster.local --dns-search svc.cluster.local --dns-opt ndots:2 --dns-opt timeout:2 --dns-opt attempts:2
root        1791     761  0 10월06 ?      00:00:03 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 21855 -container-ip 172.17.0.2 -container-port 5432
root        1798     761  0 10월06 ?      00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 21855 -container-ip 172.17.0.2 -container-port 5432
root       32198     761  0 10월12 ?      00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5432 -container-ip 172.17.0.3 -container-port 5432
root       32204     761  0 10월12 ?      00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 5432 -container-ip 172.17.0.3 -container-port 5432
root       37623     761  0 11:20 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.4 -container-port 8080
root       37630     761  0 11:20 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8080 -container-ip 172.17.0.4 -container-port 8080
root       38104   38075  0 11:26 pts/0    00:00:00 grep --color=auto docker

root 사용자 권한으로 프로세스를 확인해보니, 아니나 다를까 dockerd가 이상한 dns를 바라보고 있다. 데몬이 올바른 DNS를 바라보게 하도록 하기 위해, 일단 도커 데몬을 중지시킨다.

root@dev-server:/home/dev# systemctl stop docker

그리고 도커가 중지되었는지 확인한다.

  • systemctl이나 service로도 확인 가능. 이쪽을 더 권장한다.
    root@dev-server:/home/dev# ps -ef|grep docker
    root       38198   38075  0 11:28 pts/0    00:00:00 grep --color=auto docker

도커가 중지되었으니, 이제 올바른 DNS를 심어준다.

# vim /etc/docker/daemon.json
{
    "dns": ["8.8.8.8", "4.4.4.4"]
}

이제 도커 서비스를 재시작한다.

root@dev-server:/home/dev# systemctl start docker

이제 아마 도커가 정상적으로 가동될 것이다. 서버가 깔끔하게 도커만 사용하는 개발 서버라면 위의 방법으로 아마 해결되었겠지만, 서버에 K8s등 다른 내부 DNS를 사용하는 경우 DNS 설정이 꼬이면서 해결이 되지 않는 경우가 있다. 이 경우는 다음 포스트에서 이어서 해결해보도록 한다.

+ Recent posts