docker container 삭제와 복구 방법 (컨테이너를 삭제하면 복구 불가능인가?)

2tsumo·2022년 6월 8일
0

docker

목록 보기
1/4

도커의 컨테이너를 삭제하고 포트와 이름 등을 동일하게 실행을 시키면 혹시 그전에 내가 작업했던 컨테이너가 살아있지 않을까???
-> 아님 ㅎ

혹시 모르니 검색을 해보자


마지막으로...test를 해보자!! tomcat 컨테이너를 올려서 tomcat\_test라는 directory를 추가해주었다

컨테이너를 삭제하고 다시 실행시켜 보겠다
실행중인 컨테이너를 삭제하고 똑같이 실행시켰다

깔끔하다!

결국 얻은 결론은 기존의 컨테이너를 이미지로 저장시켜 놓지 않는다면
우리는 docker -rm 이라는 명령어 한줄로 모든 것을 날려먹을 수도 있다는 것이다!

따라서 복구방법에 대해 알아 보도록 하겠다.

1. 현재 컨테이너를 이미지로 저장 후 실행

docker commit -p [컨테이너 ID] [저장할 이미지명]

-p 옵션은 커밋을 위해 컨테이너를 일시 정지 시키는 옵션

하면 컨테이너가 이미지로 저장이 된다

그리고 실행시키면

 docker run -it -d --name 컨테이너명 -p 로컬포트:컨테이너포트 이미지명

이미지로 저장된 컨테이너가 실행된걸 볼 수 있다.

테스트

톰캣 기본이미지를 올려서 디렉토리를 하나 추가 했고 이 컨테이너를 이미지로 저장해서 다른 컨테이너로 실행시켜보겠다.

톰캣컨테이너를 실행시켜서 ilikecookies라는 디렉토리를 만들었다

디렉토리를 추가한 컨테이너를 이미지로 만들었다

docker commit 96074960c0f6 tomcat_test_img

만든 이미지로 컨테이너를 실행시켰다


실행시켜서 확인해보자


새로 만든 컨테이너를 실행시켰을때 기존 저장한 이미지로 잘 올라가 있는 것을 확인할 수 있다!

2. 이미지를 tar로 저장해서 로드

이 방법을 쓰게되면 전달도 가능하고 나도 저장해놓고 계속 쓸수 있다!

위에서 만든 이미지를 tar파일로 저장해서 내려 받아 보겠다

docker save -o ~/tomcat_img.tar tomcat_test_img

이렇게 하면 tomcat_img.tar 이 저장된다

위에서 만들었던 기존 tomcat_test_img를 삭제하고 방금 저장한 이미지로 다시
이미지를 올려보겠다

docker rmi tomcat_test_img
docker load -i ~/tomcat_img.tar

기존 이미지를 삭제시키고 tar 이미지를 로드했다

docker images

tomcat_test_img 가 정상적으로 올라간 것을 볼 수 있다!!

3. docker push로 docker hub에 올려서 복구

docker hub에 push 하기 위해선 docker login을 해야한다

docker login

id와 pw를 입력하면 아래와 같이 떠야한다

그 다음 push를 위해 태그를 만들어줘야 한다.

docker image tag {이미지} {내 유저명}/{이미지}
docker image tag tomcat_test_img sherlockid8/tomcat_test_img

이렇게 만들어 주고

docker push sherlockid8/tomcat_test_img

push를 하면


docker hub에 다음과 같이 내 이미지가 올라간 것을 볼 수 있다.

그럼 기존의 이미지를 지우고

docker hub에 있는 이미지를 받아 보자

docker pull [ docker hub id ] / [ image name : tag]
docker pull sherlockid8/tomcat_test_img

이미지가 정상적으로 받아졌고 이 이미지를 이용해서 컨테이너를 실행해보자

docker run -d -i -t --name img_tomcat -p 8090:8080 sherlockid8/tomcat_test_img

docker ps 로 정상적으로 올라간 것을 확인하고

exec 해서 확인 해본 결과

ilikecookies 폴더가 있는 이미지가 잘 받아졌다

profile
👨‍💻

0개의 댓글