본문 바로가기
Docker

[Docker] Mysql DB 실행 외부접속

by 정권이 내 2024. 1. 30.

[Docker] Mysql DB 실행 외부접속

 

리눅스에서 도커 이미지로 mysql 를 실행해보고 외부에서 접속하는 방법까지 설명 해보겠습니다.

 

docker 설치 / 실행

docker가 설치가 안되있는 환경의 경우 docker를 먼저 설치후 실행합니다.

 

Ubuntu / Debian

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker

 

CentOS / Fedora

sudo yum install docker
sudo systemctl start docker

 

docker가 정상적으로 설치후 실행되었는지 확인합니다.

sudo systemctl status docker

 

mysql 컨테이너 실행

도커로 특정 이미지를 실행할때 순서는 image pull -> run 의 순서로 진행됩니다. pull은 온라인상에 있는 이미지를 로컬 환경에 받는것이고 run은 받은 이미지를 실행하는 과정입니다.

 

이미지 받기

이미지를 받을때 태그를 지정하지 않으면 Docker Hub에 올라와있는 가장 최신 버전의 이미지를 받게 되고 태그를 지정하여 원하는 버전의 이미지를 받을수도 있습니다.

docker pull mysql
docker pull mysql:8.0.28

 

컨테이너 실행

이미지를 받고 실행할때 몇가지 docker 옵션을 지정할수 있습니다.

  • --name: 도커 컨테이너의 이름
  • -e: 이미지에 적용할 환경변수, mysql 이미지에서는 MYSQL_ROOT_PASSWORD, MYSQL_DATABASE 옵션을 사용하여 루트계정 패스워드와 데이터베이스를 지정함
  • -p: 포트포워딩 기능, 실행되는 도커 이미지의 포트를 3306으로 지정하고 외부에서 3306포트로 접근시 이미지 내부의 3306포트와 연결함
docker run --name [CONTAINER_NAME] -e MYSQL_ROOT_PASSWORD=[PASSWORD] -e MYSQL_DATABASE=[DATABASE_NAME] -p 3306:3306 -d mysql

## 예시
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=test1234 -e MYSQL_DATABASE=test-db -p 3306:3306 -d mysql

 

컨테이너 상태 확인

docker run 으로 컨테이너를 실행했다면 정상적으로 실행중인지 확인합니다.

docker ps -a
항목
CONTAINER_ID62e5de90d8fb
IMAGEmysql:8.0.28
CONMAND"docker-entrypoint..."
CREATED48 minutes ago
STATUSUp 48 minutes
PORTS0.0.0.0:3306->3306/tcp
NAMEStest-mysql

STATUS 값이 Up으로 나와있다면 정상적으로 실행된것입니다.

 

DB 외부 접속

  • 컨테이너 실행후 1,2분 정도는 내부에서 mysql이 설치 되는 과정이 있으므로 기다린후에 외부에서 툴을 사용하여 접속합니다.
  • 호스트명은 도커 컨테이너가 실행중인 pc의 IP를 입력하고 데이터베이스는 컨테이너 실행시 지정한 값을 사용합니다.

img

 

컨테이너 내부에서 DB 접속

DB툴을 사용하여 외부접속도 가능하지만 docker 명령을 이용하여 컨테이너 내부에서 mysql 콘솔로 접속하는 방법도 있습니다.

docker exec -it <CONTAINER_NAME> bash

 

실행후 root@<CONTAINER_ID> 값으로 bash쉘이 보이면 정상적으로 컨테이너에 접속된것입니다. 이제 mysql 커맨드로 직접 DB에 접속해보겠습니다.

mysql -uroot -p <PASSWORD>
root@62e5de90d8fb:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

 

docker run으로 컨테이너 실행시 지정한 데이터베이스가 생성되었는지 확인해보겠습니다.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ipron              |
| test-db            |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
반응형

댓글