본문 바로가기
Archive

아무설정필요없이 Docker로 mariadb 바로설치하고 사용하기

by livemehere 2022. 5. 5.

서버세팅을 수많이 했지만, 디비설정만큼은 매번까다롭고 귀찮은 작업입니다.

docker사용을 최대한 지양하려했습니다. 아직까지는 docker가 유용하긴하지만, 서버를 확장하거나, 옮기거나할 일이 없었기때문에요..

그리고 앞서 네이버클라우드 플랫폼에서 무료로 대여한 서버가 느려서인진 몰라도 Docker명령어 하나하나가 너무 오래걸리는 경험을 하기도했구요

 

근데, 또 서버를 한번 옮기게 되었는데, 기존에 하던대로 mariadb 환경설정을 다했음에도 불구하고, 외부접속이 안되는문제를 몇시간 고민하다보니,, 하 ..그냥 도커써야겠다라는 생각이들었습니다.

 

충분한 삽질도해보았고, 되는경험도, 안되는 경험도, 도커의 마법도 경험해봤으니, 이제는 생산성을 높이는 방법을 선택해도 되겠다는 결론을 내렸습니다.

 

더이상 환경세팅에 시간들이지 말고 열심히 개발합시다!

 

서버를 대여했거나, 내pc에 mariadb를 설치하기 위해선 docker 를 우선 설치합니다.

https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

 

Install Docker Engine on Ubuntu

 

docs.docker.com

설치는 공식문서를 그대로 따라하시면됩니다.

 

혹시 도커가 설치안된다면

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable"

위문구 실행후 설치진행

db 컨테이너 만들기

sudo docker run --name <컨테이너이름> -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<root계정비밀번호> -v /<볼륨경로>:/var/lib/mysql mariadb

이명령어에서 딱 3가지만 커스텀하게 사용하시면됩니다.

컨테이너이름, 비밀번호, 볼륨경로

포트번호는 일반적으로 3306을 사용하는데 원하시는데로 바꿔도 무방합니다.

더다양한 환경설정이 있지만, 최소한의 설정이고, 사실 볼륨도 연결해주지않아도됩니다. 하지만 연결하지않으면 컨테이너의 라이프사이클에 데이터도 함께 살고죽는다는 점이있습니다.

 

https://hub.docker.com/_/mariadb

 

Mariadb - Official Image | Docker Hub

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

더세세한 환경변수설정을 보고싶으시다면 공식 Docker Hub문서를 참조하시면 됩니다.

 

사용하기

저렇게 실행하면 디비가 백그라운드로 돌아가고있습니다.

sudo docker exec -it <컨테이너이름> bash
mysql -uroot -p
<설정한 비밀번호 입력>

위 명령어를 순서대로 입력하시면 컨테이너접속 -> 디비접속 을하실수있습니다.

 

Workbench

우리가 디비에 접근하는 방법은 두가지가있습니다.

1. localhost 환경에서 접속

2. 외부에서 접속

 

default설정으로 root의 host는 '%' 로되어있기때문에, 외부접속도 다른 설정없이 가능합니다.(workbench에서 사용가능하다는 말)

 

이때, 외부 접속은 문제가되지 않습니다.(클라우드서버에 띄워뒀을경우이겠죠)

workbench에서 ip,port, id, password 만입력하면 바로접속이되는데 문제는 localhost 환경입니다.

 

만약 웹서버+디비 가 한 서버에있을경우 서버에서 디비접속은 localhost 입니다.

그렇게 접속해보시면, docker 컨테이너를 찾는게 아니라, 그냥 localhost를 찾게됩니다. localhost와 컨테이너가 바인딩된 것은 아니니까요.

도커의 Default Bridge Mode

토커 컨테이너는 default 로 bridge networking mode 를 사용합니다.  localhost 나 127.0.0.1 이 아닌 Docker network IP 를 통해서 접근할 수 있죠. 이 docker network ip는 172.17.0.x 로 구성됩니다.

각각의 컨테이너의 ip를 알아내기위해서는 컨테이너에 접속한후 다음명령어를 치면 알수있습니다.

ip addr show eth0

localhost에서 디비 컨테이너에 접속하기

이때 알아낸 docker network ip주소를 가지고 접속하시면 됩니다.

반응형