본문 바로가기

Cloud/Docker

docker container의 흔적

내일 출장가야해서 서버 엎고 다시 설치하는데 제일 중요한 마스터 칭구가 자꾸.. 컨테이너의 흔적이 남아서 도커가 제대로 설치가 안됐다. 퇴근하고싶은데 퇴근 못하게 하는 흔적을 정리해놓는다.

systemctl restart docker

도커가 삭제도 되고 설치도 잘되는데 restart 하는 순간 문제가 생겼다. 계속 fail이 뜨길래 뭐지..? 하다가 보니 이전 흔적이 남아있기 때문이라고 git에서 알려주더라. 그래서 임의로 파일을 삭제하려했다.

rm -rf /var/lib/docker

오~ 안되는데~ 이유는 모르지만 안됐다. 정확한 이유는 이 것이였다.

rm: cannot remove '/var/lib/docker/containers/7f17ef617eb891bc1f7fb90f00958779b75ee96534c65557c7443ac14fa357f5/mounts/shm': Device or resource busy

(추측) 컨테이너(였던것)이 제대로 해제가 안되어 있는 상태였다. 그래서... 하나도 모르지만 검색해서 했다.

cat /proc/mounts | grep docker

shm /var/lib/docker/containers/7f17ef617eb891bc1f7fb90f00958779b75ee96534c65557c7443ac14fa357f5/mounts/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=65536k 0 

어디에 위치해있는지 알려준다.

umount /var/lib/docker/containers/a7c50594d4aba984e13f3caee91ddf313a9295ed55581bfb9d21f2b9d6437b3d/mounts/shm

그래서 무식하게 나온 그대로 umount 해줬다.

rm -rf /var/lib/docker
systemctl restart docker

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

문제의 /var/lib/docker 는 삭제가 되었지만 여전히 안된다. 그래서.. 할 수 있는게 뭐가 있겠어.. 로그봤다..

journalctl -u docker.service
journalctl -u docker.service | grep error

iptables 문제라는데..일단 낼 출장가야해서 잠깐 저장해두겠다.

-

출근해서 다시 해결 중 다른 서버랑 비교해보니 iptables 문제가 확연했따 ㅠ 일단 이게 안됨

iptables -L

iptables v1.6.1: can't initialize iptables table `filter': No child processes
Perhaps iptables or your kernel needs to be upgraded.

정말이지 리붓하고 싶지 않았는데 답이 리붓밖에 없는거 같아서(서버실이 넘 멀리있어.......) 일단 리붓했다.

오~~~~~~~~~~~~~~~ 10분째 서버 안켜지는데 ㅎㅎ~!

점입가경이다 이젠 디스크가 read-only로 바뀌었다.

touch: cannot touch 'a.txt': Read-only file system

결국 도움을 요청했고 문제의 원인은 쿠버네티스 설정 중 잘못 주석처리한 나의 디스크인것 같았다.........

cat /proc/mounts

/dev/sda1 / ext4 ro,relatime 0 0

를 통해 찾아보니 깜찍하게 ro 칭구로 바뀌어있는걸 확인할 수 있었다.

mount -o remount, rw /

/dev/sda1 / ext4 rw,relatime 0 0

명령얼르 통해 다시 마운트 해쥬자.............. 

- touch a.txt
- ls
a.txt

다행히도 잘 실행되주었다 

/etc/fstab

UUID=앵앵 /               ext4    errors=remount-ro 0       1

이 친구 살려주었다..ㅎㅎ....

명령어 : docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.1
 Git commit:        2d0083d
 Built:             Fri Aug 16 14:20:06 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.1
  Git commit:       2d0083d
  Built:            Wed Aug 14 19:41:23 2019
  OS/Arch:          linux/amd64
  Experimental:     false
명령어 : systemctl restart docker

드디어 해결되었따........ 다시는 함부로 주석처리하지도 않을거고 모르는 명령어 써먹지도 않을거다 ㅠㅠ