도커는 컨테이너 기반의 가상화 플랫폼이다. 컨테이너란 컨테이너가 실행되고 있는 호스트 OS의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술을 뜻한다.
정리하자면, 도커는 독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술이라고 할 수 있다.
OS 설치부터 시작해서 필요한 모든 파일을 독립적으로 생성하고 hypervisor를 거쳐야 하는 가상 머신에 비해 컨테이너는 베이스 환경의 OS를 공유하고 프로세스를 격리하는 방식이기 때문에 실행 속도가 훨씬 더 빠르다.
2. Docker로 MySQL 띄우기
1) Docker 설치
다음 페이지로 들어가서 Docker를 설치한다.
https://www.docker.com/products/docker-desktop/
Docker가 잘 설치되었다면 터미널에서 다음 명령어를 입력해 설치된 Docker의 버전을 확인할 수 있다.
2) MySQL 이미지 설치
도커에 MySQL의 이미지를 설치한다.
이미지란 해당 프로세스를 실행시키는데 필요한 설정과 파일들의 집합을 뜻한다.
docker pull mysql
이미지가 잘 다운받아지면 다음 명령어로 Docker에 다운된 이미지들을 확인할 수 있다.
docker images
도커의 대시보드에서도 내가 다운한 MySQL의 이미지를 확인할 수 있다.
3)MySQL컨테이너 생성 & 실행
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest
● --name <container_name> : <container_name> 이름의 컨테이너를 실행한다.
● -e : 컨테이너 내에서 사용할 환경변수를 설정
● -e MYSQL_ROOT_PASSWORD=<password> : MySQL의 root 권한의 비밀번호를 <password>로 설정한다.
● -d : detach 모드로 컨테이너가 실행된다. 컨테이너가 백그라운드로 실행된다고 보면 된다.
● -p <호스트 포트> <컨테이너 포트> : 호스트와 컨테이너의 포트를 연결한다
● mysql:latest : 컨테이너에 사용할 이미지
위와 같이 명령어를 입력하면 mysql-container 라는 이름으로 컨테이너가 생성된다.
또한 컨테이너 내부의 root 권한의 비밀번호는 1234로 설정된다.
그리고 호스트의 3305 포트가 컨테이너 내의 3306(MySQL의 포트번호) 포트로 연결된다.
혹시 호스트에 MySQL이 설치되어 있다면 포트번호가 겹치기 때문에 위의 예시처럼 컨테이너와 연결되는 호스트의 포트번호는 3306과 다른 번호로 지정해주는 것이 좋다.
컨테이너가 잘 생성되었다면 다음과 같은 명령어로 생성된 컨테이너들을 조회할 수 있다.
docker ps -a
대시보드에서도 확인할 수 있다.
3. 컨테이너의 MySQL 접속하기
다음과 같은 명령어를 터미널에 입력하면 컨테이너 환경에 bash로 접속할 수 있다.
exec -it mysql-container bash
대시보드에서도 컨테이너와 연결된 터미널을 열 수 있다.
아래와 같이 컨테이너에서 MySQL 접속할 수 있다.
4. MySQL에 데이터베이스 생성하기
먼저 아래의 명령어로 현재 데이터베이스를 조회한다.
mysql > show databases;
mysql > create database DB명 default character set utf8; // 데이터베이스 생성
mysql > drop database DB명; //데이터베이스 삭제
그 다음 사용자 계정을 생성하고 데이터베이스 권한을 부여해야 한다.
mysql > select host, user, password from user; // user 테이블 조회
mysql > create user 사용자ID@localhost identified by '비밀번호'; //계정 생성
mysql > GRANT ALL privileges ON DB명.* TO 계정아이디@localhost IDENTIFIED BY '비밀번호'; //모든 권한 부여
mysql > flush privileges; //변경된 내용을 메모리에 반영;