(Docker veya mysql yönetimi ile ilgili sınırlı bilgimden dolayı muhtemelen aptalca bir soru, ancak bu konuda bütün bir akşam geçirdiğim için sormaya cesaret ediyorum.)
Kısaca
Mysql'yi bir docker kapsayıcısında çalıştırmak ve ana bilgisayarımdan ona bağlanmak istiyorum. Şimdiye kadar başardığım en iyi şey:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Daha fazla detay
Ben şunu kullanıyorum 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
Bu dosyanın bulunduğu dizinde, imajı başarıyla oluşturabilir ve şu şekilde çalıştırabilirim:
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
Resme eklediğimde, gayet iyi çalışıyor gibi görünüyor:
# 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.
[...]
Ancak sunucudan o kadar başarılı değilim:
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Daha fazla ayrıntı
- Benimkine benzeyen bir soru olduğunu gördüm . Ancak, aynı değil (ve yine de herhangi bir yanıtı yok)
- Mysql'e adanmış resimler olduğunu gördüm , ancak onlarla daha başarılı olamadım
- Benim
grep -v
garip hissedebilirsiniz. Kuşkusuz, bunu yapmanın daha temiz bir yolu olabilir. Ama resmimi iliştirdiğimde, beklendiği gibi çalıştığını gözlemleyebiliyorum (yani: kaldırıldıbind-address
). Ve kapta görebiliyorum/var/log/mysql/error.log
:
Sunucu ana bilgisayar adı (bağlantı adresi): '0.0.0.0'; bağlantı noktası: 3306 - '0.0.0.0', '0.0.0.0' olarak çözümlenir; IP üzerinde oluşturulan sunucu soketi: '0.0.0.0'.