[Docker] 도커 볼륨
🤯 컨테이너가 가진 문제점
Docker를 활용하면 특정 프로그램을 컨테이너로 띄울 수 있다.
이 프로그램에 기능이 추가되면, 새로운 이미지(프로그램)를 만들어서 새 컨테이너를 실행시켜야 한다.
이 때, Docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고 아예 새로운 컨테이너를 만들어서 교체한다.
여기서 문제가 발생한다. 이런 특징 때문에 기존 컨테이너 내부에 있던 데이터는 삭제된다.
예를 들어 기존 컨테이너가 MySQL을 실행시키는 컨테이너였다면 MySQL에 저장된 데이터도 같이 삭제되어 버린다.
이렇게 데이터가 삭제되지 않으려면 어떻게 해야할까?
⭐️ Docker Volume
도커의 볼륨이란 도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다.
볼륨은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다.
✔️ 볼륨을 사용하는 명령어
$ docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명]
만약 호스트의 디렉토리 절대 경로에 디렉토리가 이미 존재할 경우, 호스트의 디렉터리가 컨테이너의 디렉터리를 덮어씌운다.
컨테이너 디렉터리가 날라가버린다!
호스트의 디렉토리 절대 경로에 디렉토리가 존재하지 않는다면, 호스트의 디렉터리 절대 경로에 디렉토리를 새로 만들고
컨테이너의 디렉토리에 있는 파일들을 호스트의 디렉토리에 복사해온다.
우리가 볼륨을 사용하는 목적은 컨테이너와 호스트의 데이터 공유일 것이다.
의도대로 사용하고자 한다면, 디렉토리를 빈 상태로 두거나, 아예 만들지 않아야 한다!
또한 컨테이너와 호스트를 연결 후에, 컨테이너를 삭제 후 같은 디렉토리를 새 컨테이너와 연결 시, 같은 비밀번호를 사용해야 한다.
왜냐하면 호스트 컴퓨터는 전에 컨테이너와 호스트를 연결할 때의 비밀번호가 저장되어 있기 때문에
새 비밀번호는 에러로 인식하기 때문이다.