도커 windows container 사용 시 host dns 연결 안되는 문제 해결하기

Updated on

도커 windows container 를 사용 할때에 host dns 연결이 안되는 문제가 필히 발생된다.

{
    "bridge": "Internet",
    "debug": false,
    "dns": [
        "1.1.1.1",
        "8.8.8.8"
    ],
    "builder": {
        "gc": {
            "defaultKeepStorage": "20GB",
            "enabled": true
        }
    },
    "experimental": false,
    "features": {
        "buildkit": true
    },
    "insecure-registries": [],
    "registry-mirrors": []
}

이때는 Docker Engine 에서 해당 값으로 수정해주고, docker build image 하게되면 문제 없이 잘 빌드 될 것이다.

만약에 여기서 2375 port 를 Expose daemon on tcp 를 열어주려면 아래와 같이 설정

{
  "bridge": "Internet",
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "debug": false,
  "dns": [
    "1.1.1.1",
    "8.8.8.8"
  ],
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "hosts": [
    "tcp://0.0.0.0:2375"
  ],
  "insecure-registries": [],
  "registry-mirrors": []
}

외부에서 2375 포트를 열어주려면 netsh로 방화벽을 열어줘야한다. 그런데, 일반적으로 그냥 열어주면 보안에 취약해지므로, 특정 아이피만 오픈하게 설정한다.

netsh advfirewall firewall add rule name="Docker Engine" dir=in action=allow protocol=TCP localport=2375 remoteip=AAA.AAA.AAA.AAA BBB.BBB.BBB.BBB
netsh advfirewall firewall delete rule name="Docker Engine"