(Ini mungkin pertanyaan bodoh karena pengetahuan saya yang terbatas dengan Docker atau administrasi mysql, tetapi karena saya menghabiskan sepanjang malam untuk masalah ini, saya berani menanyakannya.)
Pendeknya
Saya ingin menjalankan mysql di kontainer buruh pelabuhan dan menghubungkannya dari host saya. Sejauh ini, yang terbaik yang saya capai adalah:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Keterangan lebih lanjut
Saya menggunakan yang berikut ini 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
Di direktori tempat ada file ini, saya berhasil membuat gambar dan menjalankannya dengan:
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
Saat saya melampirkan ke gambar, tampaknya berfungsi dengan baik:
# 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.
[...]
Namun saya tidak begitu sukses dari tuan rumah:
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Lebih detail lagi
- Saya telah melihat bahwa ada pertanyaan yang sepertinya milik saya . Namun, itu tidak sama (dan toh tidak ada jawaban)
- Saya telah melihat bahwa ada gambar yang didedikasikan untuk mysql , tetapi saya tidak lebih berhasil dengan mereka
- Saya
grep -v
mungkin merasa aneh. Memang, mungkin ada cara yang lebih bersih untuk melakukannya. Tetapi ketika saya melampirkan gambar saya, saya dapat mengamati bahwa itu benar-benar berfungsi seperti yang diharapkan (yaitu: menghapusbind-address
). Dan saya bisa melihat di wadah/var/log/mysql/error.log
:
Nama host server (alamat-bind): '0.0.0.0'; port: 3306 - '0.0.0.0' berubah menjadi '0.0.0.0'; Soket server dibuat pada IP: '0.0.0.0'.