도커는 기능이 추가되면 새로운 이미지를 만들어서 컨테이너를 실행 시켜야 한다.
docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고, 새로운 컨테이너를 만들어서 통째로 갈아끼우는 방식으로 교체한다. → 이것을 효율적이라고 생각함.
이런 특징 때문에 기존 컨테이너를 새로운 컨테이너로 교체하면, 기존 컨테이너 내부에 있던 데이터도 같이 삭제된다. → 삭제되면 안되는 DB내용이 있으면 어떡할까!
컨테이너 내부에 저장된 데이터가 삭제되면 안 되는 경우에는 **볼륨(Volume)**이라는 개념을 활용하자!
그렇다면 도커의 볼륨이란??
도커 컨테이너에서 데이터를 영속적으로 관리하기 위한 방법
정확히는 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 방법이다! → 이래야 컨테이너 새로만들어도 삭제 안되겠지!
볼륨 사용 명령어
$ docker run **-v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로]** [이미지명]:[태그명]
딱 봤을때 이해 안가겠지만 차근차근 해보자
일단 더 가기전에 호스트 컴퓨터의 저장공간을 사용한다고 했는데 2가지 상황이 발생한다!! 개념적으로 알아두자!
아래는 도커에서 MYSQL을 실행시키는 모습이다! 도커허브에 image별로 실행방법이 다른데 mysql은 기본적으로 userId(디폴트 root)랑 password 환경변수로 설정해줘야 실행시킬 수 있지 않은가! 그래서 -e 로 환경변수를 지정해주는 것. 도커허브의 환경변수 password명은 MYSQL_ROOT_PASSWORD 이렇게 되어있으므로 그때그때 확인해서 환경변수 주입해서 실행해주면 될듯하다! 3307:3306(나는 mysql 쓰고있어서 호스트포워딩 이렇게함!)
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql