container의 IP 주소 할당 확인

docker inspect <CONTAINER_IDENTIFER>
root@ubuntu:~/prac# docker inspect cent

...

"Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.8",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:08",
            "Networks": {

...

docker0 interface 확인

Untitled

내 경우에는 여기가 문제였다.

docker container의 네트워크는 docker0의 gateway(여기서는 172.17.0.1)를 통해서 NAT를 거쳐 외부와 통신하게 되는데, 나는 docker0의 interface가 날아간 상태였다. 때문에 외부와 통신이 불가능했고, 이로 인해 Dockerfile에서 RUN으로 패키지를 설치할 수 없었던 것이다.

Docker 재시작

systemctl restart docker
ip add
root@ubuntu:~/prac# systemctl restart docker
root@ubuntu:~/prac# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default ql
    link/ether 00:0c:29:1c:5c:df brd ff:ff:ff:ff:ff:ff
    inet 211.183.3.100/24 brd 211.183.3.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe1c:5cdf/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group defau
    link/ether 02:42:9a:e8:7f:c5 brd ff:ff:ff:ff:ff:ff
    **inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0**
       valid_lft forever preferred_lft forever
    inet6 fe80::42:9aff:fee8:7fc5/64 scope link 
       valid_lft forever preferred_lft forever

주의할 점은 docker를 재시작하면 모든 컨테이너가 stopped 상태가 된다는 것.

root@ubuntu:~/prac# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

docker restart <CONTAINER>로 실행시켜야 한다.