윈도우에서 Docker 컨테이너가 자꾸 사라져버리네요.
관련링크
본문
Windows 에서도 Docker 가 사용 가능해진지도 꽤 시간이 흘렀고 해서
개발시 별도로 서버(가상머신포함)를 셋팅하는 것보다 도커 컨테이너를 활용하면 편하겠다 생각했습니다.
근데 이게 생각처럼 매끄럽진 않네요.
일단 첫번째는 redis-server 실행에 좀 트러블이 있었습니다..
key expire 이벤트를 받거나 하는게 필요해 커스텀 설정 적용이 필요했습니다.
필요한 설정 파일을 작성하고 다음과 같이 Dockerfile 을 작성했습니다.
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]
빌드..
docker build --tag myredis .
그리고 다음과 같이 컨테이너를 만들어 주면
docker run --rm -itd -p 32001:6379
컨테이너가 바로 꺼져버립니다. (--rm 옵을 줬으니 삭제되서 docker ps -a 에도 안나타납니다.)
이건 다음과 같이 tail -f /dev/null 을 추가해서 해결봤습니다.
CMD service redis-server start;tail -f /dev/null
두번째는 윈도우를 재시작하거나 도커 서비스를 재시작 시키면 컨테이너가 모두 날라가 버린다는 겁니다.
검색해보니 이런 케이스가 종종 검색되는데 뭔가 뽀족한 원인과 해결법은 찾질 못 했습니다... ;
윈도우 스케쥴러에서 docker service 프로세스 실행이 성공했을 때 컨테이너를 만들어주게도 해봤는데 그리 만족할만한 해법은 아니었습니다...
세번째는 GUI 관리툴 격인 Kitematic 이 제대로 동작을 안합니다. 만들다만 느낌이에요.. (버전 자체가 0.x.x 이긴 합니다.)
UI 가 먹통이 되는 상황이 많이 발생해요..
마지막으로 컨테이너에 매핑한 포트가 도커 데스크탑 재시작 후에는 잠겨버려서 새로 만드는 컨테이너에 매핑이 안된다는 점입니다. 포트는 이미 점유되어 있고 컨테이너 리스트에는 안보이고 실제로 redis client 로 접속해보면 안떠있습니다....
동일 머신에서 큰 자원 안먹고 컨테이너를 띄워 테스트한다는 장점은 있는데 생각보다는 불편합니다.
저야 redis 를 캐싱 용도로만 띄워 사용해서 매번 새로 만들어도 무관하지만 그게 아닌 경우 컨테이너가 날라가버리는건 큰 문제사항이 되겠고요.
그냥 WSL 사용하는 것으로 결정했습니다. ㅎ