늘모자란, 개발 :: docker - already exists message occurred even you are not running any containers

늘모자란, 개발

제목을 지을땐 항상 희한한 기분이다.
문법이 맞나 싶어가지고.. 어쨌든 백업할때 느꼈던건데, 나는 docker를 그냥 디스크만 옮기면될줄알고 다른디스크에 똑같은 경로로 옮겼다.
그리고 docker_opt를 다시 잡아준 후에 docker start 를 통해 컨테이너를 실행하려니 정말 죽어도 안되는것이다.
별수를 다 써봤는데도 안되었다.

정말 이상한 일이라 검색해봤는데 나같은 사례가 없었다.
하긴 누가 디스크 to 디스크로 옮기는일을 할까.. 여튼 해답은 다음과 같다.

/docker/containerd/daemon/


해당경로에는 현재 돌아가고 있는 컨테이너의 정보들이 존재한다.
여기를 깔끔하게 지워주면 돌아가게 되는데 문제는 바로 여기

io.containerd.metadata.v1.bolt/meta.db


이 파일이다. 이 db파일내에 컨테이너 이름이 들어가있으면 docker는 해당 컨테이너가 이미 running 중이라고 판단한다.
즉, docker를 정상적으로 exit 한 상황이 아닌 상태에서 그냥 파일을 옮기면 meta.db엔 running 중인 상태로 기록되어 있기때문에 절대 돌릴 수가 없다.

해결법은 그냥 docker를 다시 깔고, 깔끔한 meta.db를 덮어쓰면된다. (데몬내에 다른 폴더들은 그냥 정리)
2018/03/15 15:51 2018/03/15 15:51