docker를 활용해 특정 프로그램을 컨테이너에 올릴 수 있다. 여기서 이 특정 프로그램 기능이 추가되어 새로운 이미지를 만들어서 컨테이너를 실행해야 한다면 docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고 새로운 컨테이너를 만들어 통째로 갈아끼우는 방식을 활용한다..
위와 같은 특성 때문에 기존 컨테이너가 새로운 컨테이너로 변경되면 원래 있던 데이터가 사라진다!
데이터를 영속적으로 저장하기 위해서 사용하는 것이 바로 dokcer volume이다..
volume은 컨테이너 자체의 저장공간을 사용하지 않고 호스트 내부의 저장공간을 활용한다docker run -v [Host 디렉토리 절대 경로]:[컨테이너 디렉토리 절대 경로] [이미지명:태그명]Host 디렉토리 절대 경로에 디렉토리가 이미 존재할 경우 호스트 디렉토리가 컨테이너의 디렉토리를 덮어씌운다
Host 디렉토리 절대 경로에 디렉토리가 없다면 새로 만들고 컨테이너의 디렉터리에 있는 파일들을 Host 디렉토리로 복사해온다.
mkdir docker_MySQL
cd docker_MySQL
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[비밀번호 설정] -v /~~~/~~/~/docker_MySQL/MySQL_data:/var/lib/mysql mysql

좀 길지만 뭐 없다..
docker exec -it [컨테이너 ID] bash
위 명령어를 입력하면 실행중인 컨테이너 내부에 접근할 수 있다
echo $MYSQL_ROOT_PASSWORD
리눅스 명령어이다 환경변수의 값을 볼 수 있다.

위 사진을 보면 설정한 비밀번호가 잘 나온 것을 확인할 수 있다

mysql -u root -p
위 명령어를 입력하면 mysql로 접근해서 쿼리문을 작성할 수 있다

DataGrip을 통해서도 확인할 수 있다
경로들을 지정하여 올바르게 생성한 후 컨테이너를 삭제했다가 다시 설치할 때 MYSQL_ROOT_PASSWORD를 바꾸면 로그인 못한다. 바꾸지마라...
바꾸고 싶다면 로그인하고 안에서 바꿔야한다.