이전 포스팅
mariadb 이미지 가져오기
$ docker pull mariadb:10.5
mariadb 10.5버전을 가져온다.
mariadb 컨테이너 생성
$ docker run -d --name mariadb -p 3306:3306 -v ${PWD}:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=1234 -e MARIADB_DATABASE=test mariadb:10.5
mariadb 컨테이너를 생성하는 docker 명령어이다. 하나하나 살펴보자!
run : docker 이미지로 컨테이너를 실행하는 명령어.
-d : 백그라운드에서 컨테이너가 계속 실행되게 하는 옵션
--name mariadb : 컨테이너의 이름을 지정 (mariadb 라고 지정함)
-p 3306:3306 : 호스트 연결포트와 컨테이너 연결포트를 연결해준다. <host>:<container> 호스트의 3306과 컨테이너의 3306을 연결한다.
-v ${PWD}:/var/lib/mysql : ${PWD} (대문자 주의!)변수를 통해서 HOST(내 컴퓨터)의 터미널의 위치(폴더)와 컨테이너 내부의 /var/lib/mysql 을 연결한다. > <host>:<container>
위와 같이 Host부분에 경로를 연결한 경우 bind volume 이라고 한다.
PWD대신에 원하는 경로로 설정 가능하다.
docker 프로그램 내에서 허용하는 경로가 몇 개 지정되어있으니 유의하세요! (허용 경로 추가 가능) 처음엔 연습용으로 Desktop 폴더에 생성하는걸 추천합니다
현재 폴더와 /var/lib/mysql 폴더가 서로 연결되어서 파일을 완전히 공유한다고 생각하면 편하다.
-e MARIADB_ROOT_PASSWORD=1234 : root 패스워드를 1234로 설정.
-e MARIADA_DATABASE=test : 컨테이너를 만듦과 동시에 test라는 이름의 database를 만들어서 사용한다.
mariadb:10.5 : mariadb:10.5 이미지를 사용해서 컨테이너를 만든다.
컨테이너가 생성되었다면 842473cbca8edbe84776e400a1e328cca8218a79 같은 수상한 문자열이 한 줄 출력된다.
그럼 컨테이너 생성 성공이다
그리고 현재 폴더를 열어서 mariadb관련된 파일들이 생성되었는지 확인해보자! bind volume으로 연결했기 때문에
bind volume이란?
데이터를 저장하는 곳을 지정해주는 방법에 대해서 설명이 되어있다.
리눅스에서 mariadb로 컨테이너를 만들면 /var/lib/mysql 이라는 폴더에 저장이 된다.
그래서 bind volume을 통해서 내가 직접 눈으로 보고 관리할 수 있는 host의 특정 폴더와 연결을 해 줄 수 있다. - 매우 중요!
폴더와 폴더의 연결 뿐만 아니라 파일과 파일의 연결도 가능하다
mariadb 환경변수
컨테이너를 만들면서 환경변수를 설정할 수 있다.
MARIADB_ROOT_PASSWORD 변수는 처음에 설정해주기 바란다.
mariadb 컨테이너에 접속하기
우선 mariadb 컨테이너가 구동중인지 확인해 보고 구동중이 아니라면 구동시켜주자
// 실행중인 컨테이너 목록
$ docker ps
// 컨테이너 구동하기
$ docker start mariadb
실행중이라면 아래 명령어를 실행해보자
$ docker exec -it mariadb bash
아주 중요한 명령어가 등장했다.
exec : 현재 구동중인 컨테이너에 접속하는 명령어
-i , -t : 두 옵션은 같이 쓰이는 경우가 매우 많다. -it : interactive 하게 가상 tty를 통해 컨테이너에 접속하겠다는 의미를 가지고 있다.
mariadb : 접속하고자 하는 컨테이너 이름.
bash : exec을 통해서 컨테이너에 접속했을 때 bash shell을 실행하겠다는 명령어이다.
접속에 성공하면 터미널이 아래 그림처럼 바뀐다.
database 확인하기
여기부터는 docker의 영역이 아니지만 컨테이너를 만들면서 생성했던 database가 있는지까지만 확인해 보자
$ mariadb -uroot -p1234
root 계정을 사용하고 password는 1234로 mariadb에 접속한다.
데이터베이스에 성공적으로 접속했다!
> show database;
위 명령어를 실행했을 때 test 데이터베이스가 보인다면 성공이다!
이제 ctrl + c를 눌러서 mariadb에서 나가보자(컨테이너에서 나가는게 아님!)
그리고 (ctrl + p) + (ctrl + q) 를 순서대로 눌러서 컨테이너의 구동을 유지한 채로 컨테이너의 bash shell에서 빠져나올 수 있다.
만약 (ctrl + p) + (ctrl + q)대신에 exit 을 눌러서 나온다면 컨테이너의 구동까지 종료되니 알고있자!
'DevOps > Docker' 카테고리의 다른 글
[Docker] Django 개발 환경 세팅 #2 (0) | 2021.08.05 |
---|---|
[Docker] Django 개발 환경 세팅 #1 (0) | 2021.08.04 |
[Docker] container, image 삭제 (2) | 2021.07.26 |
[Docker] Nginx 웹서버 구동해보기 (2) | 2021.07.26 |
[Docker] 계획 + 공부를 위해 참고한 사이트 모음 (3) | 2021.07.26 |