docker
동일한 docker image 를 사용했는데 실행 결과가 다르다?
wefree
2021. 7. 31. 15:33
문제
네이버 검색 결과를 스크래핑(scraping) 할 필요가 있어서 rendertron 을 사용했다.
rendertron 을 쉽게 사용할 수 있도록 한 docker image 를 활용해 서버 2대에 각각 설치후 아래처럼 실행했다.
docker run -it --rm -p 3000:3000 dockette/rendertron
그런데 서버 2대에서 API Response 가 각각 다르다!!! (Server-B 의 경우 이미지가 노출되지 않는다)
Server-A 에 설치된 rendertron 결과
Server-B 에 설치된 rendertron 결과
설명
동일한 docker 이미지를 이용했지만, Server-A 와 Server-B 의 네트워크 설정이 달랐던 것이다. 사내 인프라에 접속하기 위해 /etc/docker/daemon.json 를 수정한 적이 있는데, Server-A 와 Server-B 가 각각 다르게 설정 되어 있었다.
Sever-A 의 /etc/docker/daemon.json
{
"data-root": "/home1/docker",
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "1g",
"max-file": "3"
}
}
Sever-B 의 /etc/docker/daemon.json
{
"log-driver": "json-file",
"data-root": "/home1/docker",
"log-opts": {
"max-size": "1g",
"max-file": "3"
},
"mtu": 1450,
"storage-driver": "overlay2",
"dns": [
"x.x.x.x"
],
"bip": "y.y.y.y/26"
}
docker image 를 사용하면 무조건 동일하게 동작한다고 생각했는데, /etc/docker/daemon.json 처럼 외부 설정에 따라 최종 결과는 달라질 수도 있구나..
docker 매뉴얼에 나와있는 docker daemon DNS options 를 한번 읽어봐도 좋을 것 같다.