도커싱크의 멈춤증상을 5분마다 텍스트 파일을 업데이트 해주는 꼼수로 해결을 시도중이었다.
간단한 도스 배치파일로 5분마다 텍스트 파일(dontdiedockersync.txt)에 시간을 기록하게 하였다.
정상적으로 진행이 되는지를 도커 컨테이너쪽 쉘에서 tail -f dontdiedockersync.txt 로 체크해보는데.. 처음 tail을 실행 했을 때는 잘 보이는데 이후 업데이트된 내용이 출력되질 않았다.
파일의 변경 내용을 컨테이너쪽의 tail은 갱신을 못하는 것이었다.
호스트인 윈도우 머신 쪽에서 baretail로 해당 파일을 감시해보면 파일이 업데이트 된 내용이 잘 보였고, 컨테이너쪽 tail -f를 ctrl+c로 멈추고 텍스트파일을 직접 열어보면 파일의 변경 내용은 잘 들어오고 있었다.
원인을 찾던 중 호스트쪽에서 해당 파일을 보는 것과 컨테이너쪽에복제된 해당 파일은 중요한 차이가 있다는 것을 알게 되었다.
호스트쪽에서는 도스 배치파일에서 >> 연산자를 통한 리다이렉션을 통해 텍스트 파일에 내용을 추가하는 것이고 컨테이너쪽에서는 도커싱크를 통해 파일 자체가 뒤바뀌는 것이기 때문에 tail -f로는 파일내용이 업데이트가 안 되는 것이다.
해결방법 : tail -f 대신 tail -F를 사용한다. (대문자 F)
두 옵션의 차이는?
-F의 경우 파일이 교체되면 다시 열어준다는 점.