본문 바로가기
Docker

4. 도커 볼륨 -(1)

by shulk 2024. 11. 14.

1. 컨테이너의 문제점

컨테이너에 어떤 이미지가 있는데 그 이미지에 기능이 추가되면(업뎃) 새로운 이미지를 만들어서 컨테이너를 실행해야한다. 근데 지금까지는 기존 컨테이너 수정하지 않고 아예 새로운 컨테이너를 만들고 새로운 이미지 넣는 방식을 했다.

하지만 생각해보면 Mysql의 경우 이렇게 하면 기존에 있던 데이터 다 날라가서 문제이니 이러한 문제를 볼륨으로 해결

 

2. 도커 볼륨(Docker Volume)이란?

도커 볼륨이란? 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이고, 볼륨은 컨테이너 자체의 저장 공간을 사용하는게 아닌 호스트 컴퓨터 저장공간을 사용하는거다.

만약 컨테이너가 볼륨에 A라는 디렉토리를 저장하려하는데 이미 볼륨에 A라는 디렉토리가 있다면 호스트에 있는A가 컨테이너에 덮어 씌우고,

볼륨에 A디렉토리가 없는 경우엔 컨테이너에 A디렉토리 있는거를 볼륨에 복사한다.

$ docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명]

 

3. 도커로 Mysql 실행시켜보기 - (1)

(1) 이미 존재 실행중인 포트 에러

[호스트 포트번호 3306으로 할때만 지금 내용 걸치고 다른 포트번호로 할때는 에러 안나니 패스]

먼저 이렇게 호스트와 컨테이너 연결함과 동시에 생성 실행까지 해줬는데 저런 에러가 뜬다

저거는 이미 3306 포트를 사용중인 다른게 실행중이여서 그렇다.

 

맥(Mac)에서는 이렇게 하고

$ sudo lsof -i:[포트번호]  #해당 포트번호 사용중인거 조회
$ sudo kill [PID번호] #해당 PID 프로그램 죽이기

 

윈도우에서는 파워쉘을 작업관리자 권한으로 하고 해야한다.

netstat -ano | findstr [특정포트 넘버] 특정 포트 확인
tasklist /FI "PID eq [PID 넘버]" 해당 PID  프로그램 이름을 표시
taskkill /f /pid [PID 넘버] pid를 key로 하여 중지

 

(2) Mysql의 root 비밀번호 적용하기

이렇게 하고 다시 실행시켜봤는데? 확인해보니 중지된 mysql이라 나온다.

 

그래서 로그를 찍어보고 확인해보니 데이터베이스 패스워드가 정의되지 않아서 그랬던거다.

 

패스워드 정의 방법

이 명령어에 -e는 환경변수 설정을 말한다

$ docker run -e MYSQL_ROOT_PASSWORD=[패스워드] -p 3306:3306 -d mysql

 

 

이렇게 하고 확인해보면 잘 실행중이다!

 

그러고 해당 컨테이너에 접속후 이 명령어를 처보면 설정한 비번이 나오는데 이 의미는 해당 환경변수값 출력이다

$가 환경변수 값을 의미하는듯

echo $MYSQL_ROOT_PASSWORD

 

이렇게 하고 GUI인워크벤치로 연결테스트 확인해보면 정상 연결되고 이후 컨테이너 삭제후 다시 해보면 연결테스트 실패 나온다.

(3) 지금까지 해본 흐름

현재는 아직 볼륨을 사용 안한 방법으로 했다.

 

'Docker' 카테고리의 다른 글

6. 도커 파일 -(1)  (0) 2024.11.15
5. 도커 볼륨 -(2)  (0) 2024.11.14
3. 도커의 명령어 -(2)  (0) 2024.11.13
2. 도커의 명령어 -(1)  (0) 2024.11.13
1. 도커의 개념  (0) 2024.11.12