백엔드 개발자(node.js)가 되는 과정

Docker로 MySQL 설치 및 실행하기 (Mac OS)

soopy 2023. 6. 27. 12:22
728x90

도커를 왜 쓰는 걸까?

도커에 대한 설명은 쉽게 찾아볼 수 있으므로 매우 간단하게 설명하자면, 하나의 컴퓨터를 여러 대의 컴퓨터인 마냥 써야할 경우에 사용한다. 예를 들어서 웹 서비스를 총 10개 운영한다고 했을 때 하나의 컴퓨터, 하나의 OS에서 10개 사이트에 대한 관리를 하는 것보다(가능한지 잘 모르겠다.) 독립된 10개의 공간에서 각각 관리하는 것이 유지 보수에 유리하기 때문이다. 왜냐하면 컴퓨팅 자원을 분리하여 독립적으로 사용할 수 있다는 장점이 있기 때문이다. 3번 웹 서비스 운영에 이슈가 생겼다고 해서 5번 서비스 운영에 지장을 주면 안되기 때문이다.

1. 도커 데스크탑 설치

Mac OS의 터미널을 통해서 도커를 설치하고, 켜고 끄거나 할 수 있겠지만 개인적으로 가장 간단하게는
그냥 도커 데스크탑을 설치하는 것이 여러모로 편리하다.

링크: https://www.docker.com/products/docker-desktop/

2. 도커 실행하기

도커 데스크탑 설치가 완료되면 실행한다. 해당 앱을 실행하는 것이 곧 도커를 켜는 것이 된다. 도커를 실행하면 일정 수준의 메모리를 차지하기 때문에 넉넉하지 않다면 쓰지 않을 경우 끄는 것이 좋다. 특히 MySQL 쿼리 연습용으로 쓴다거나 한다면 쓰지 않을 때 끄는 것이 좋겠다.

도커 버전을 확인해보는 방법으로 잘 설치가 되었는지 확인할 수 있다.

docker -v

3. MySQL 이미지 다운 받기

docker pull mysql

MySQL이라는 프로그램을 사용할 수 있는 컨테이너를 생성하기 위해 이미지를 다운 받는다.
여기서 컨테이너는 이미지를 실행하는 독립적인 실행 단위로 볼 수 있다.

4. 이미지 실행하기

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=test1234 -d -p 3306:3306 mysql:latest

컨테이너의 이름을 지정해주고(꼭 위와 같을 필요는 없다.)
비밀번호 설정 시 환경변수명을 위와같이 지정한 뒤 비밀번호를 입력해야 한다. 도커 이미지로 MySQL을 실행할 때는 ROOT 사용자에게 설정된 비밀번호 설정이 뭔지를 알기 위해 바라보는 것이 MYSQL_ROOT_PASSWORD 환경변수이다. 이를 다른 이름으로 설정한다면 ROOT 사용자의 비밀번호는 Default값 또는 빈 비밀번호로 설정될 수 있다.
-d 설정을 통해 백그라운드에서 실행되도록 한다. (데몬 모드) 데이터베이스는 보통 백그라운드에서 실행되도록 하거나 아예 다른 서버를 사용하여 사용자와 분리된 채로 사용되어야 터미널 세션과 독립적으로 작동하게 된다.
-p 3306:3306으로 호스트 포트와 컨테이너 포트를 매핑합니다. 호스트에서 3306포트를 쓰는 것이 곧 컨테이너에 접근하는 것으로 하겠다는 의미이다. 여기서 만약 사전에 MySQL community-server 가 설치되어 실행 중이라면 에러가 발생할 것이다. 3306포트를 MySQL community-server가 이미 사용 중이기 때문이다. 그러므로 macOS 기준으로 시스템 환경설정 - MySQL에 들어가서 사용 중지를 해야 한다.
위 방법이 통하지 않는다면 정체를 알 수 없는 무언가가 3306포트를 사용 중일 가능성이 크므로 아래 명령어를 통해 누가 3306 포트를 차지하고 있는지 확인해본다.

sudo lsof -i :3306

만일 목록에 잡히는 어떠한 프로세스가 있다면 해당 프로세스의 PID 번호를 기억했다가 종료시키도록 하자

sudo kill -9 [PID번호]

-9는 강제 종료를 의미하므로 사실 권장되는 방법은 아니다. 보통은 프로세스에게 종료할 기회를 주고, 작업을 마무리할 기회를 주는 것이 좋은데 -9는 즉시 종료시키므로 어떤 프로세스냐에 따라 문제가 발생할 수도 있다. 그러므로 긴급 상황에서 -9을 사용할 수 있겠지만 내가 어떤 프로세스를 종료하는지 명확하게 인지하지 않은 채 다짜고짜 -9 옵션이 인터넷에 많이 올라와 있다는 이유로 가볍게 사용해서는 안될 것이다.

mysql:latest 는 실행할 이미지를 선택함을 의미하여 mysql의 버전별 이미지가 여러개일 경우가 있을 텐데 최신 버전의 이미지를 사용하겠다는 의미가 된다.

5. MySQL 접속

mysql -u root -p

위 코드 입력 후 환경변수에 지정한 비밀번호를 이어서 입력합니다. 그러면 MySQL 쿼리문 입력 가능한 상태로 접속됩니다.

6. 컨테이너 온오프

docker stop mysql-container
docker start mysql-container

위 두가지 명령으로 컨테이너를 종료, 시작할 수 있다. 이는 도커 자체를 켜고 끄는 것과 다르다.

728x90
728x90