(Docker 또는 mysql 관리에 대한 제한된 지식으로 인해 어리석은 질문 일 수 있지만이 문제에 대해 저녁을 보냈으므로 감히 묻습니다.)
간단히 말해서
도커 컨테이너에서 mysql을 실행하고 호스트에서 연결하고 싶습니다. 지금까지 내가 달성 한 최고는 다음과 같습니다.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
자세한 내용은
다음을 사용하고 있습니다 Dockerfile
.
FROM ubuntu:14.04.3
RUN apt-get update && apt-get install -y mysql-server
# Ensure we won't bind to localhost only
RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \
&& mv temp.txt /etc/mysql/my.cnf
# It doesn't seem needed since I'll use -p, but it can't hurt
EXPOSE 3306
CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
이 파일이있는 디렉토리에서 이미지를 성공적으로 빌드하고 다음을 사용하여 실행할 수 있습니다.
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
이미지에 첨부하면 잘 작동하는 것 같습니다.
# from the host
> docker exec -it <my_image_name> bash
#inside of the container now
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
그러나 나는 호스트로부터 그다지 성공하지 못했습니다.
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
더 자세한 정보
- 내 것과 같은 질문이 있다는 것을 본 적이 있습니다 . 그러나 동일하지 않습니다 (어쨌든 답이 없습니다)
- mysql 전용 이미지가 있다는 것을 보았지만 더 이상 성공하지 못했습니다.
- 내
grep -v
기분이 이상 할 수 있습니다. 분명히, 더 깨끗한 방법이있을 수 있습니다. 그러나 내 이미지를 첨부하면 실제로 예상대로 작동하는 것을 볼 수 있습니다 (예 : 제거됨bind-address
). 그리고 컨테이너에서 볼 수 있습니다/var/log/mysql/error.log
.
서버 호스트 이름 (바인드 주소) : '0.0.0.0'; 포트 : 3306- '0.0.0.0'은 '0.0.0.0'으로 확인됩니다. IP에 생성 된 서버 소켓 : '0.0.0.0'.