도커의 컨테이너를 삭제하고 포트와 이름 등을 동일하게 실행을 시키면 혹시 그전에 내가 작업했던 컨테이너가 살아있지 않을까???
-> 아님 ㅎ
혹시 모르니 검색을 해보자
컨테이너를 삭제하고 다시 실행시켜 보겠다
실행중인 컨테이너를 삭제하고 똑같이 실행시켰다
깔끔하다!
결국 얻은 결론은 기존의 컨테이너를 이미지로 저장시켜 놓지 않는다면
우리는 docker -rm 이라는 명령어 한줄로 모든 것을 날려먹을 수도 있다는 것이다!
따라서 복구방법에 대해 알아 보도록 하겠다.
docker commit -p [컨테이너 ID] [저장할 이미지명]
-p 옵션은 커밋을 위해 컨테이너를 일시 정지 시키는 옵션
하면 컨테이너가 이미지로 저장이 된다
그리고 실행시키면
docker run -it -d --name 컨테이너명 -p 로컬포트:컨테이너포트 이미지명
이미지로 저장된 컨테이너가 실행된걸 볼 수 있다.
톰캣 기본이미지를 올려서 디렉토리를 하나 추가 했고 이 컨테이너를 이미지로 저장해서 다른 컨테이너로 실행시켜보겠다.
톰캣컨테이너를 실행시켜서 ilikecookies라는 디렉토리를 만들었다
디렉토리를 추가한 컨테이너를 이미지로 만들었다
docker commit 96074960c0f6 tomcat_test_img
만든 이미지로 컨테이너를 실행시켰다
새로 만든 컨테이너를 실행시켰을때 기존 저장한 이미지로 잘 올라가 있는 것을 확인할 수 있다!
이 방법을 쓰게되면 전달도 가능하고 나도 저장해놓고 계속 쓸수 있다!
위에서 만든 이미지를 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 가 정상적으로 올라간 것을 볼 수 있다!!
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 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 폴더가 있는 이미지가 잘 받아졌다