(यह संभवतः डॉकटर या 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' का समाधान करता है; सर्वर सॉकेट आईपी पर बनाया गया: '0.0.0.0'।