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 설정이 꼬이면서 해결이 되지 않는 경우가 있다. 이 경우는 다음 포스트에서 이어서 해결해보도록 한다.
'DevOps > docker' 카테고리의 다른 글
apk update temporary error (try again later) 해결 - 3 (0) | 2021.10.27 |
---|---|
apk update temporary error (try again later) 해결 - 2 (0) | 2021.10.13 |
nginx로 웹 서버 로드밸런싱하기 (0) | 2021.08.19 |
docker stop/rm 불가능 현상 해결 (0) | 2021.08.05 |
docker_tutorial:command1 (0) | 2021.05.29 |