• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

docker로 mariadb배포 시 문제 발생

22.10.08 06:41 작성 조회수 691

0

현재 증상입니다.

환경은 windows10입니다.

 

mariadb를 켰을 때

mariadb 켰을 때.png사진이 잘 안 보일 수 있어서 에러 메세지를 아래 써놨습니다.

PS C:\Users\ccro1> docker run -d -p 3306:3306  --network ecommerce-network --name mariadb ccro1307/test:mariadb
33de5e6b75944d49e8e4220d428d0674d90103f4719387db1f566e7c927429e8
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

 

mariadb를 껐을 때

mariadb 껐을 때.png

껐을 때는 mysql이 없다고 그러고

켰을 때는 port가 중첩되서 안된다는 것 같은데..

해결책이 어떻게 될 까요

 

mariadb는

.\bin\mariadb-install-db.exe --datadir=C:\Work\mariadb-10.5.17-winx64\data --service=mariaDB --port=3306 --password=test1357

로 설치하였습니다.

답변 1

답변을 작성해보세요.

0

안녕하세요, 이도원입니다.

첫번째 오류는 포트에 대한 충돌이 문제인 것 같습니다. 도커 실행 시 -p 3306:3306 부분을 -p 3307:3306 과 같이 변경해서 사용해 보시기 바랍니다. 3307포트를 지정했기 때문에, Windows와 같은 Host PC에서 접속할 때는 3307 포트를 사용하셔야 합니다. 이러한 방법으로 여러 개의 MaridbDB 컨테이너를 기동하실 수 있습니다.

두번째 오류는, 올려주신 에러의 마지막 부분을 보니, mysql.user 테이블이 존재하지 않는다는 오류 메시지가 보입니다. Mariadb 컨테이너를 기동하실 때, 직접 생성하신 이미지를 사용하셨다면, 몇몇 필수 테이블들이 mysql이라는 데이터베이스에 (Db명이 mysql) 있어야 하는데, 해당 테이블 중 user 테이블이 없다는 오류인 것 같습니다. 해당 mariadb 이미지를 어떻게 생성하셨는지 확인해 보시거나, 직접 생성하신 이미지가 필요없다고 하시면, mariadb:latest 라는 이미지명으로 컨테이너를 생성하셔도 될 것 같습니다.

윈도우에서 직접 mariadb를 실행하신 경우에, Mariadb를 추가로 도커 컨테이너로 기동하실 려면 반드시 포트를 변경(-p 3307:3306 등)하셔야 합니다. 윈도우에서 mariadb를 실행하지 않고 Docker 컨테이너를 2개 실행하여 실습하실 수도 있습니다. 단, Port는 위와 같이 충돌이 발생하지 않도록 변경해 주셔야 합니다.

감사합니다.