docker 시작시 에러

집에 갑자기 정전이 와서 서버가 꺼져버렸다.

서버가 다시 살아나고 도커로 사용하던 컨테이너들을 재시작하려고 하니 에러가 났다.

[root@localhost ~]# docker start plex
Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/40a78337fb7041d7de6ccd93467be6ec60f7baf325f062c97e24cc4d01a13d91/merged: invalid argument
Error: failed to start containers: plex
[root@localhost ~]#

이 문제를 해결하기 위해 구글 검색을 해보았으나 딱히 좋은 의견은 보질 못했다.

docker container list 명령으로 컨테이너를 찾아보았으나 보이지 않았다. docker ps 명령으로 찾아서 모든 컨테이너를 삭제한다.

[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d613c08b1f2 linuxserver/tautulli "/init" 7 days ago Exited (255) 3 hours ago tautulli
fdcb9b590e94 linuxserver/transmission "/init" 8 days ago Exited (255) 3 hours ago transmission
246a6d8a721b plexinc/pms-docker "/init" 10 days ago Exited (255) 3 hours ago plex
3040fb42bd81 oznu/homebridge "/init" 12 days ago Exited (255) 3 hours ago homebridge
[root@localhost docker]# docker container rm 7d613c08b1f2
7d613c08b1f2
[root@localhost docker]# docker container rm fdcb9b590e94
fdcb9b590e94
[root@localhost docker]# docker container rm 246a6d8a721b
246a6d8a721b
[root@localhost docker]# docker container rm 3040fb42bd81
3040fb42bd81

컨테이너를 모두 삭제하고 다시 컨테이너 실행스크립트를 이용해 새로운 컨테이너를 만들어서 실행시키니 해결되었다.

 

정전 같은 이유로 불완전하게 종료되었을 경우, 도커의 재실행에 문제가 생긴다. 이를 해결하는 방법 또한 시원하게 나온게 없었다. 컨테이너가 제대로 실행되지 않는다면 다 삭제하고 다시 실행하는게 차라리 빠르다.

귀찮은 실행스크립트를 다시 작성하지 않도록 잘 보관해야 한다.

Docker 설치 사용 후기

최근에 홈오토메이션을 잠깐 만져보다가 Docker를 접하게 되었다.

그동안 도커도커 얘기만 들어보고 개념만 들어봤지 이게 무엇인지 제대로 몰랐는데 이제는 좀 써봐야겠다 싶어서 도커에 대한 책도 한권 구매해서 정독하고 마이크로서버도 도커 기반으로 변경. 어차피 몇가지 서비스가 운영되지 않았기 때문에 도커로 옮기는건 별로 어렵지 않았으나 이왕이면 깨끗한 상태에서 돌리는게 기분 좋으니 CentOS 7 로 재설치하고 도커 기반으로 이전했다.

plex, transmission, nginx, homebridge 정도만 도커로 돌려보니 이제 이게 뭔지 좀 알 것 같다.

도커를 사용해본 후기.

  1. 전가상화와 비교할 수 없을 정도로 강력함.
    ESXI를 이용해 가상화로 서버를 돌려봤는데… 이건 운영체제 선택의 자유로움이 있고 정말 완벽한 격리환경이 되는 반면에, 가상화를 한다해도 자원을 너무나 많이 소모했다. 특히 게스트 운영체제 구동에 자원이 많이 드니… 이렇게까지 해야하나 싶었는데, 도커는 호스트 운영체제의 성능을 거의 그대로 쓸 수 있고, 자원도 많이 들지 않는다.아마 리눅스 서버를 가상화해서 쓴다면 ESXI보다 Docker가 정답인듯하다.
  2. 라이브러리 설치에서 해방
    yum이 나오면서 의존성에 대한 패키지 설치는 거의 자동화가 이루어졌긴하지만 서버에 프로그램을 설치하다보면 수많은 패키지들이 같이 설치가 된다. 시스템이 얼마나 더럽혀지는지도 알 수가 없고, 내가 쓰던 프로그램을 언인스톨한다고 해서 이 라이브러리와 패키지들이 같이 삭제되는건 아니기 때문에 과도한 관련 패키지와 라이브러리 설치는 별로 마음에 들지 않았었다.그런데, 도커로 오니 이러한게 한방에 해결. 더이상 운영체제가 각종 라이브러리 파일로 더럽혀질 일은 없을듯하다.
  3. 컨테이너 실행 옵션이 바뀌면 컨테이너를 통째로 지우고 다시 만들어야함.
    도커 사용시 약간 귀찮은 점. 어쩌면 방법이 있는데 내가 도커를 아직 잘 몰라서 못 찾은 것일 수도.
  4. 이미지에서 지원하지 않는 기능과 옵션에 대해서 내가 처리 불가능.
    사용하고자하는 이미지마다 정해진 옵션이 있고 이 옵션들에 대해서만 사용 가능하다.
    물론 그 부분을 내가 수정하여 이미지를 만들면서 사용하면 해결가능하다.
  5. 하지만 그럼에도 장점이 크다.
    호스트 운영체제의 시스템을 전혀 건드리지 않으면서 프로그램을 실행할 수 있다는건 정말 큰 장점.
  6. 실서비스에서 사용 가능한가…?
    사용해본 경험으로는 실서비스에 충분히 사용가능할듯하다.
    특히, 같은 이미지만 사용한다면 어디서나 같은 컨테이너를 돌릴 수 있다는게 최고의 장점인 것 같다.
    경험상 리눅스서버 사용시에는 운영체제 버전이 다르면 라이브러리 충돌 때문에 애먹는 경우가 많은데 도커가 그 해답이 될 수 있을 것 같다.

도커도커 왜들 그리 도커를 찾았나 얘기해서 사용해봤더니 실제로 아주 훌륭했다. 좀더 사용해보면 장단점이 더 많이 보이겠지.